diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2007-11-15 18:06:49 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@dberlin.org> | 2007-11-15 18:06:49 +0000 |
commit | 07268172ff6ef736cccb1b6c92cc9825f9f8cae4 (patch) | |
tree | 6185208346d8d080f4bb9b3fe09f36eeb511cab1 | |
parent | 560a737e073788463b9275c5e92ebc12f0ea62a2 (diff) |
Fix bugs in iterator invalidation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44174 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/ADT/SparseBitVector.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/include/llvm/ADT/SparseBitVector.h b/include/llvm/ADT/SparseBitVector.h index fe63f9f247..8dbf0c7001 100644 --- a/include/llvm/ADT/SparseBitVector.h +++ b/include/llvm/ADT/SparseBitVector.h @@ -614,8 +614,10 @@ public: // Loop through, intersecting as we go, erasing elements when necessary. while (Iter2 != RHS.Elements.end()) { - if (Iter1 == Elements.end()) + if (Iter1 == Elements.end()) { + CurrElementIter = Elements.begin(); return changed; + } if (Iter1->index() > Iter2->index()) { ++Iter2; @@ -654,8 +656,10 @@ public: // Loop through, intersecting as we go, erasing elements when necessary. while (Iter2 != RHS.Elements.end()) { - if (Iter1 == Elements.end()) + if (Iter1 == Elements.end()) { + CurrElementIter = Elements.begin(); return changed; + } if (Iter1->index() > Iter2->index()) { ++Iter2; @@ -689,6 +693,7 @@ public: const SparseBitVector<ElementSize> &RHS2) { Elements.clear(); + CurrElementIter = Elements.begin(); ElementListConstIter Iter1 = RHS1.Elements.begin(); ElementListConstIter Iter2 = RHS2.Elements.begin(); @@ -732,7 +737,6 @@ public: ++Iter1; } - CurrElementIter = Elements.begin(); return; } |