From: Owen Anderson Date: Wed, 22 Apr 2009 07:16:54 +0000 (+0000) Subject: Fix for PR3946, in which SmallVector could behave strangely in corner cases. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=747972914ae73379fd837e5a30cea229be792e34;p=oota-llvm.git Fix for PR3946, in which SmallVector could behave strangely in corner cases. Patch by Peter Johnson. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69785 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ADT/SmallVector.h b/include/llvm/ADT/SmallVector.h index d5fef4828e6..bf4960ad144 100644 --- a/include/llvm/ADT/SmallVector.h +++ b/include/llvm/ADT/SmallVector.h @@ -302,7 +302,7 @@ public: append(End-NumToInsert, End); // Copy the existing elements that get replaced. - std::copy(I, OldEnd-NumToInsert, I+NumToInsert); + std::copy_backward(I, OldEnd-NumToInsert, OldEnd); std::fill_n(I, NumToInsert, Elt); return I; @@ -351,7 +351,7 @@ public: append(End-NumToInsert, End); // Copy the existing elements that get replaced. - std::copy(I, OldEnd-NumToInsert, I+NumToInsert); + std::copy_backward(I, OldEnd-NumToInsert, OldEnd); std::copy(From, To, I); return I;