]> granicus.if.org Git - clang/commitdiff
Bug fix in RewriteBuffer::getMappedOffset: potentially multiple deltas
authorTed Kremenek <kremenek@apple.com>
Tue, 18 Mar 2008 21:00:57 +0000 (21:00 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 18 Mar 2008 21:00:57 +0000 (21:00 +0000)
need to be skipped over when AfterInserts == true, as multiple deltas
may share the same FileLoc.

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

lib/Rewrite/Rewriter.cpp

index 440d1d39fd5ccbf4148ecfe5eba70f21e65a5c85..e3cc977bea3ba76f27fa57aab632d3743d0d4481 100644 (file)
@@ -32,10 +32,12 @@ unsigned RewriteBuffer::getMappedOffset(unsigned OrigOffset,
   for (; DeltaIdx != Deltas.size() && 
        Deltas[DeltaIdx].FileLoc < OrigOffset; ++DeltaIdx)
     ResultOffset += Deltas[DeltaIdx].Delta;
-
-  if (AfterInserts && DeltaIdx != Deltas.size() && 
-      OrigOffset == Deltas[DeltaIdx].FileLoc)
-    ResultOffset += Deltas[DeltaIdx].Delta;
+  
+  if (AfterInserts)
+    for (; DeltaIdx != Deltas.size() &&
+         OrigOffset == Deltas[DeltaIdx].FileLoc; ++DeltaIdx)
+      ResultOffset += Deltas[DeltaIdx].Delta;
+  
   return ResultOffset;
 }