mirror of git://gcc.gnu.org/git/gcc.git
PR libstdc++/81173 fix undefined memset with null pointer
PR libstdc++/81173 * include/bits/stl_bvector.h (vector<bool>::_M_initialize_value): Do not pass null pointer to memset. From-SVN: r249554
This commit is contained in:
parent
0759db190d
commit
b6d03af0b1
|
|
@ -1,3 +1,9 @@
|
||||||
|
2017-06-22 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
PR libstdc++/81173
|
||||||
|
* include/bits/stl_bvector.h (vector<bool>::_M_initialize_value):
|
||||||
|
Do not pass null pointer to memset.
|
||||||
|
|
||||||
2017-06-21 Ville Voutilainen <ville.voutilainen@gmail.com>
|
2017-06-21 Ville Voutilainen <ville.voutilainen@gmail.com>
|
||||||
|
|
||||||
PR libstdc++/80675
|
PR libstdc++/80675
|
||||||
|
|
|
||||||
|
|
@ -364,7 +364,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
const_iterator
|
const_iterator
|
||||||
operator+(difference_type __i) const
|
operator+(difference_type __i) const
|
||||||
{
|
{
|
||||||
const_iterator __tmp = *this;
|
const_iterator __tmp = *this;
|
||||||
|
|
@ -406,7 +406,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
{
|
{
|
||||||
if (__first._M_p != __last._M_p)
|
if (__first._M_p != __last._M_p)
|
||||||
{
|
{
|
||||||
_Bit_type *__first_p = __first._M_p;
|
_Bit_type* __first_p = __first._M_p;
|
||||||
if (__first._M_offset != 0)
|
if (__first._M_offset != 0)
|
||||||
__fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x);
|
__fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x);
|
||||||
|
|
||||||
|
|
@ -509,7 +509,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
#else
|
#else
|
||||||
_Bvector_base() { }
|
_Bvector_base() { }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_Bvector_base(const allocator_type& __a)
|
_Bvector_base(const allocator_type& __a)
|
||||||
: _M_impl(__a) { }
|
: _M_impl(__a) { }
|
||||||
|
|
||||||
|
|
@ -632,11 +632,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
: vector(__n, false, __a)
|
: vector(__n, false, __a)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
vector(size_type __n, const bool& __value,
|
vector(size_type __n, const bool& __value,
|
||||||
const allocator_type& __a = allocator_type())
|
const allocator_type& __a = allocator_type())
|
||||||
#else
|
#else
|
||||||
explicit
|
explicit
|
||||||
vector(size_type __n, const bool& __value = bool(),
|
vector(size_type __n, const bool& __value = bool(),
|
||||||
const allocator_type& __a = allocator_type())
|
const allocator_type& __a = allocator_type())
|
||||||
#endif
|
#endif
|
||||||
: _Base(__a)
|
: _Base(__a)
|
||||||
|
|
@ -955,7 +955,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
{
|
{
|
||||||
std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
|
std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
|
||||||
std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
|
std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
|
||||||
std::swap(this->_M_impl._M_end_of_storage,
|
std::swap(this->_M_impl._M_end_of_storage,
|
||||||
__x._M_impl._M_end_of_storage);
|
__x._M_impl._M_end_of_storage);
|
||||||
_Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(),
|
_Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(),
|
||||||
__x._M_get_Bit_allocator());
|
__x._M_get_Bit_allocator());
|
||||||
|
|
@ -1129,9 +1129,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
void
|
void
|
||||||
_M_initialize_value(bool __x)
|
_M_initialize_value(bool __x)
|
||||||
{
|
{
|
||||||
__builtin_memset(this->_M_impl._M_start._M_p, __x ? ~0 : 0,
|
if (_Bit_type* __p = this->_M_impl._M_start._M_p)
|
||||||
(this->_M_impl._M_end_addr() - this->_M_impl._M_start._M_p)
|
__builtin_memset(__p, __x ? ~0 : 0,
|
||||||
* sizeof(_Bit_type));
|
(this->_M_impl._M_end_addr() - __p)
|
||||||
|
* sizeof(_Bit_type));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -1155,10 +1156,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _InputIterator>
|
template<typename _InputIterator>
|
||||||
void
|
void
|
||||||
_M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
|
_M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
|
||||||
__false_type)
|
__false_type)
|
||||||
{ _M_initialize_range(__first, __last,
|
{ _M_initialize_range(__first, __last,
|
||||||
std::__iterator_category(__first)); }
|
std::__iterator_category(__first)); }
|
||||||
|
|
||||||
template<typename _InputIterator>
|
template<typename _InputIterator>
|
||||||
|
|
@ -1223,7 +1224,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
else
|
else
|
||||||
insert(end(), __first, __last);
|
insert(end(), __first, __last);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _ForwardIterator>
|
template<typename _ForwardIterator>
|
||||||
void
|
void
|
||||||
_M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
|
_M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
|
||||||
|
|
@ -1264,7 +1265,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
|
|
||||||
template<typename _InputIterator>
|
template<typename _InputIterator>
|
||||||
void
|
void
|
||||||
_M_insert_range(iterator __pos, _InputIterator __first,
|
_M_insert_range(iterator __pos, _InputIterator __first,
|
||||||
_InputIterator __last, std::input_iterator_tag)
|
_InputIterator __last, std::input_iterator_tag)
|
||||||
{
|
{
|
||||||
for (; __first != __last; ++__first)
|
for (; __first != __last; ++__first)
|
||||||
|
|
@ -1276,7 +1277,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
|
|
||||||
template<typename _ForwardIterator>
|
template<typename _ForwardIterator>
|
||||||
void
|
void
|
||||||
_M_insert_range(iterator __position, _ForwardIterator __first,
|
_M_insert_range(iterator __position, _ForwardIterator __first,
|
||||||
_ForwardIterator __last, std::forward_iterator_tag);
|
_ForwardIterator __last, std::forward_iterator_tag);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue