summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Tooling/Core/Replacement.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Tooling/Core/Replacement.cpp b/clang/lib/Tooling/Core/Replacement.cpp
index 918488310c5..7a5fb856ae7 100644
--- a/clang/lib/Tooling/Core/Replacement.cpp
+++ b/clang/lib/Tooling/Core/Replacement.cpp
@@ -287,8 +287,13 @@ llvm::Error Replacements::add(const Replacement &R) {
// with them and replace them with the merged replacements.
auto MergeBegin = I;
auto MergeEnd = std::next(I);
- while (I-- != Replaces.begin() && Overlap(R, *I))
+ while (I != Replaces.begin()) {
+ --I;
+ // If `I` doesn't overlap with `R`, don't merge it.
+ if (!Overlap(R, *I))
+ break;
MergeBegin = I;
+ }
Replacements OverlapReplaces(MergeBegin, MergeEnd);
llvm::Expected<Replacements> Merged =
OverlapReplaces.mergeIfOrderIndependent(R);
OpenPOWER on IntegriCloud