]> git.ipfire.org Git - thirdparty/gcc.git/commit
PR libstdc++/83982 fix exception-safety guarantee of std::vector::resize
authorJonathan Wakely <jwakely@redhat.com>
Wed, 8 Aug 2018 16:31:55 +0000 (17:31 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Wed, 8 Aug 2018 16:31:55 +0000 (17:31 +0100)
commitc4242debcd8f307b22a9ad0697247e7b84651230
tree062e5679f6804e4c65e2414536e15d86a2a5b7e5
parentce46b1fe2800fb4fc7f8e6ac9b2e51880930c991
PR libstdc++/83982 fix exception-safety guarantee of std::vector::resize

Construct new elements before moving existing ones, so that if a default
constructor throws, the existing elements are not left in a moved-from
state.

Backport from mainline
2018-06-14  Daniel Trebbien <dtrebbien@gmail.com>
    Jonathan Wakely  <jwakely@redhat.com>

PR libstdc++/83982
* include/bits/vector.tcc (vector::_M_default_append(size_type)):
Default-construct new elements before moving existing ones.
* testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
New.

From-SVN: r263427
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/vector.tcc
libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc [new file with mode: 0644]