diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 755b2c20a09..2a694d96ebd 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2018-11-09 Jonathan Wakely + + PR libstdc++/87787 + * include/bits/stl_uninitialized.h (__relocate_a_1): Do not call + memmove when there's nothing to copy (and pointers could be null). + 2018-11-07 Hafiz Abid Qadeer * configure: Regenerated. diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h index 94c7e151e29..8839bfdcc90 100644 --- a/libstdc++-v3/include/bits/stl_uninitialized.h +++ b/libstdc++-v3/include/bits/stl_uninitialized.h @@ -904,7 +904,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Tp* __result, allocator<_Up>& __alloc) { ptrdiff_t __count = __last - __first; - __builtin_memmove(__result, __first, __count * sizeof(_Tp)); + if (__count > 0) + __builtin_memmove(__result, __first, __count * sizeof(_Tp)); return __result + __count; }