PR libstdc++/67554 Do not pass null pointers to memcpy

PR libstdc++/67554
	* include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
	(_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.

From-SVN: r260243
This commit is contained in:
Jonathan Wakely 2018-05-14 23:22:27 +01:00 committed by Jonathan Wakely
parent a49fa6a084
commit cb4a4643bc
2 changed files with 12 additions and 2 deletions

View File

@ -1,5 +1,9 @@
2018-05-14 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/67554
* include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
(_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
PR libstdc++/82966
* include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
instead of type.

View File

@ -152,7 +152,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
inline static void
_S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o)
{ __builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp)); }
{
if (__b)
__builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp));
}
};
template<typename _Tp>
@ -258,7 +261,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
inline static void
_S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b)
{ __builtin_memcpy(__b, __a, __n * sizeof (_Tp)); }
{
if (__n != 0)
__builtin_memcpy(__b, __a, __n * sizeof (_Tp));
}
};
// Copy a plain array __a[<__n>] into a play array __b[<>]