diff options
Diffstat (limited to 'libstdc++-v3/include/bits/stl_algobase.h')
-rw-r--r-- | libstdc++-v3/include/bits/stl_algobase.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h index 2cef9237d76..c638c547887 100644 --- a/libstdc++-v3/include/bits/stl_algobase.h +++ b/libstdc++-v3/include/bits/stl_algobase.h @@ -375,9 +375,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) static _Tp* __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) { - __builtin_memmove(__result, __first, - sizeof(_Tp) * (__last - __first)); - return __result + (__last - __first); + const ptrdiff_t _Num = __last - __first; + if (_Num) + __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); + return __result + _Num; } }; @@ -572,7 +573,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) { const ptrdiff_t _Num = __last - __first; - __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); + if (_Num) + __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); return __result - _Num; } }; |