From 5f6c7cfa931a9f9a154c67927f5dec7e928c23d6 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Sun, 17 Jun 2012 11:52:22 +0000 Subject: SmallVector: return a valid iterator for the rare case of inserting an empty range into a SmallVector. Patch by Johannes Schaub! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158643 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/SmallVector.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/llvm/ADT/SmallVector.h b/include/llvm/ADT/SmallVector.h index 973e0284ab..02eee62290 100644 --- a/include/llvm/ADT/SmallVector.h +++ b/include/llvm/ADT/SmallVector.h @@ -542,7 +542,7 @@ public: iterator insert(iterator I, size_type NumToInsert, const T &Elt) { if (I == this->end()) { // Important special case for empty vector. append(NumToInsert, Elt); - return this->end()-1; + return NumToInsert == 0 ? this->end() : this->end()-1; } // Convert iterator to elt# to avoid invalidating iterator when we reserve() @@ -590,7 +590,7 @@ public: iterator insert(iterator I, ItTy From, ItTy To) { if (I == this->end()) { // Important special case for empty vector. append(From, To); - return this->end()-1; + return From == To ? this->end() : this->end()-1; } size_t NumToInsert = std::distance(From, To); -- cgit v1.2.3