aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrançois Dumont <frs.dumont@gmail.com>2024-06-01 22:17:19 +0200
committerFrançois Dumont <frs.dumont@gmail.com>2024-06-03 21:34:05 +0200
commit0426be454448f8cfb9db21f4f669426afb7b57c8 (patch)
tree1b1264dddd67252ebe04783f92bd9706e9615a26
parentf3d6d60d2ae584a23bb7c681cbd511202953c391 (diff)
downloadgcc-0426be454448f8cfb9db21f4f669426afb7b57c8.zip
gcc-0426be454448f8cfb9db21f4f669426afb7b57c8.tar.gz
gcc-0426be454448f8cfb9db21f4f669426afb7b57c8.tar.bz2
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.
-rw-r--r--libstdc++-v3/include/bits/vector.tcc5
1 files changed, 5 insertions, 0 deletions
diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc
index 36b27dc..c500aab 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