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
This commit is contained in:
Benjamin Kramer
2012-06-17 11:52:22 +00:00
parent 8dffa4a106
commit 5f6c7cfa93
2 changed files with 9 additions and 2 deletions

View File

@@ -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);