From: Chris Lattner Date: Fri, 23 May 2008 23:06:56 +0000 (+0000) Subject: fix an inconsistency computing offsets that caused a crash on rewrite-nest.m X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9ed7cfd351c5f90df04e5d46680a9b4373b58ee4;p=clang fix an inconsistency computing offsets that caused a crash on rewrite-nest.m git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51514 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Rewrite/Rewriter.cpp b/lib/Rewrite/Rewriter.cpp index 4f54102d02..bea7c00352 100644 --- a/lib/Rewrite/Rewriter.cpp +++ b/lib/Rewrite/Rewriter.cpp @@ -52,7 +52,7 @@ void RewriteBuffer::InsertText(unsigned OrigOffset, /// operation. void RewriteBuffer::ReplaceText(unsigned OrigOffset, unsigned OrigLength, const char *NewStr, unsigned NewLength) { - unsigned RealOffset = getMappedOffset(OrigOffset, true); + unsigned RealOffset = getMappedOffset(OrigOffset, false); Buffer.erase(RealOffset, OrigLength); Buffer.insert(RealOffset, NewStr, NewStr+NewLength); if (OrigLength != NewLength) diff --git a/test/Rewriter/rewrite-nest.m b/test/Rewriter/rewrite-nest.m new file mode 100644 index 0000000000..1fe0c75850 --- /dev/null +++ b/test/Rewriter/rewrite-nest.m @@ -0,0 +1,29 @@ +// RUN: clang -rewrite-objc %s -o =- + +#include + +@interface NSMapTable @end +@interface NSEnumerator @end + +typedef unsigned int NSUInteger; + +@interface NSConcreteMapTable : NSMapTable { +@public + NSUInteger capacity; +} +@end + +@interface NSConcreteMapTableValueEnumerator : NSEnumerator { + NSConcreteMapTable *mapTable; +} +@end + +@implementation NSConcreteMapTableValueEnumerator + +- nextObject { + while (mapTable->capacity) { + } + return 0; +} +@end +