aboutsummaryrefslogtreecommitdiff
path: root/lib/Rewrite
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-03-18 21:00:57 +0000
committerTed Kremenek <kremenek@apple.com>2008-03-18 21:00:57 +0000
commit88ad97f17790b753e2e113b149d7f164e42fa2ba (patch)
treea199a395a3f8e9c9d06685e1e14f611779af46a2 /lib/Rewrite
parent9f68fa52543e04736cf6f40d82f3d6d49a3a0989 (diff)
Bug fix in RewriteBuffer::getMappedOffset: potentially multiple deltas
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
Diffstat (limited to 'lib/Rewrite')
-rw-r--r--lib/Rewrite/Rewriter.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/Rewrite/Rewriter.cpp b/lib/Rewrite/Rewriter.cpp
index 440d1d39fd..e3cc977bea 100644
--- a/lib/Rewrite/Rewriter.cpp
+++ b/lib/Rewrite/Rewriter.cpp
@@ -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;
}