]> granicus.if.org Git - clang/commitdiff
fix an inconsistency computing offsets that caused a crash on rewrite-nest.m
authorChris Lattner <sabre@nondot.org>
Fri, 23 May 2008 23:06:56 +0000 (23:06 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 23 May 2008 23:06:56 +0000 (23:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51514 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Rewrite/Rewriter.cpp
test/Rewriter/rewrite-nest.m [new file with mode: 0644]

index 4f54102d02b5a5c32da531a8d0626d3816d1f0df..bea7c00352d2fa466c556ba0bddf26d25135533b 100644 (file)
@@ -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 (file)
index 0000000..1fe0c75
--- /dev/null
@@ -0,0 +1,29 @@
+// RUN: clang -rewrite-objc %s -o =-
+
+#include <objc/objc.h>
+
+@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
+