Fix exception safety bug in vector::push_back
llvm-svn: 172250
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 8d9aec88021af7bb038eb7ce183862385d9784c6
diff --git a/include/memory b/include/memory
index 4c12ad9..f80d699 100644
--- a/include/memory
+++ b/include/memory
@@ -1571,7 +1571,10 @@
__construct_backward(allocator_type& __a, _Ptr __begin1, _Ptr __end1, _Ptr& __end2)
{
while (__end1 != __begin1)
- construct(__a, _VSTD::__to_raw_pointer(--__end2), _VSTD::move_if_noexcept(*--__end1));
+ {
+ construct(__a, _VSTD::__to_raw_pointer(__end2-1), _VSTD::move_if_noexcept(*--__end1));
+ --__end2;
+ }
}
template <class _Tp>