From: François Dumont Date: Sat, 1 Jun 2024 20:17:19 +0000 (+0200) Subject: libstdc++: Fix -Wstringop-overflow warning coming from std::vector [PR109849] X-Git-Tag: basepoints/gcc-16~8557 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0426be454448f8cfb9db21f4f669426afb7b57c8;p=thirdparty%2Fgcc.git libstdc++: Fix -Wstringop-overflow warning coming from std::vector [PR109849] libstdc++-v3/ChangeLog: PR libstdc++/109849 * include/bits/vector.tcc (std::vector<>::_M_range_insert(iterator, _FwdIt, _FwdIt, forward_iterator_tag))[__cplusplus < 201103L]: Add __builtin_unreachable expression to tell the compiler that the allocated buffer is large enough to receive current elements plus the elements of the range to insert. --- diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc index 36b27dce7b9..c500aab9e56 100644 --- a/libstdc++-v3/include/bits/vector.tcc +++ b/libstdc++-v3/include/bits/vector.tcc @@ -933,6 +933,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER const size_type __len = _M_check_len(__n, "vector::_M_range_insert"); +#if __cplusplus < 201103LL + if (__len < (__n + (__old_start - __old_finish))) + __builtin_unreachable(); +#endif + pointer __new_start(this->_M_allocate(__len)); pointer __new_finish(__new_start); __try