summaryrefslogtreecommitdiff
path: root/src/changes.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/changes.hh')
-rw-r--r--src/changes.hh6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/changes.hh b/src/changes.hh
index 5ebb3ded..9d0328d4 100644
--- a/src/changes.hh
+++ b/src/changes.hh
@@ -53,8 +53,10 @@ void update_forward(ConstArrayView<Buffer::Change> changes, RangeContainer& rang
changes_tracker.update(*it++);
};
- for (auto& range : ranges)
- update_range(changes_tracker, range, advance_while_relevant);
+ auto range_it = std::lower_bound(ranges.begin(), ranges.end(), changes.front(),
+ [](auto& range, const Buffer::Change& change) { return get_last(range) < change.begin; });
+ for (auto end = ranges.end(); range_it != end; ++range_it)
+ update_range(changes_tracker, *range_it, advance_while_relevant);
}
template<typename RangeContainer>