diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2018-11-09 20:14:07 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2018-11-09 20:14:07 +0000 |
commit | 213fd71709e40dbcf601f765e80a56b1c624e4a8 (patch) | |
tree | 532eb077ffff67fdf71a4b61f0dfeb105e04dbae | |
parent | fcc499722be30b540eb1c163bfe39d23c9164ae0 (diff) | |
download | gcc-213fd71709e40dbcf601f765e80a56b1c624e4a8.zip gcc-213fd71709e40dbcf601f765e80a56b1c624e4a8.tar.gz gcc-213fd71709e40dbcf601f765e80a56b1c624e4a8.tar.bz2 |
PR libstdc++/87787 fix UBsan error in std::vector
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).
From-SVN: r265984
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_uninitialized.h | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 755b2c2..2a694d96 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2018-11-09 Jonathan Wakely <jwakely@redhat.com> + + 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 <abidh@codesourcery.com> * configure: Regenerated. diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h index 94c7e15..8839bfd 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; } |