]> granicus.if.org Git - clang/commitdiff
don't dereference hte end iterator when inserting at end of buffer.
authorChris Lattner <sabre@nondot.org>
Sun, 6 Apr 2008 04:36:15 +0000 (04:36 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 6 Apr 2008 04:36:15 +0000 (04:36 +0000)
Patch by Cédric Venet!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49259 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Rewrite/RewriteRope.h

index 4d558b579f3297e59fb27e2940fb490a2ebf784f..8d2fbe38575c752d2193efa6e6b8f1e6e7fe230f 100644 (file)
@@ -148,6 +148,7 @@ public:
   
   iterator getAtOffset(unsigned Offset) {
     assert(Offset <= CurSize && "Offset out of range!");
+    if (Offset == CurSize) return iterator(Chunks.end(), 0);
     std::list<RopePiece>::iterator Piece = Chunks.begin();
     while (Offset >= Piece->size()) {
       Offset -= Piece->size();
@@ -158,6 +159,7 @@ public:
 
   const_iterator getAtOffset(unsigned Offset) const {
     assert(Offset <= CurSize && "Offset out of range!");
+    if (Offset == CurSize) return const_iterator(Chunks.end(), 0);
     std::list<RopePiece>::const_iterator Piece = Chunks.begin();
     while (Offset >= Piece->size()) {
       Offset -= Piece->size();