summaryrefslogtreecommitdiff
path: root/src/selection.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2017-11-27 17:29:19 +0800
committerMaxime Coste <mawww@kakoune.org>2017-11-27 20:29:01 +0800
commitd142db80f2393d7b74b2088cf8df986b592b9675 (patch)
tree15be8b1597b5d17ee427f961b6f4e5bb3f6e594c /src/selection.cc
parent40352aed9dbab02d31a69cec42398e362d189440 (diff)
Fix compute_modified_ranges corner case that would crash on undo
Fixes #1506 Fixes #1215
Diffstat (limited to 'src/selection.cc')
-rw-r--r--src/selection.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/selection.cc b/src/selection.cc
index 0ea173ce..3574afaa 100644
--- a/src/selection.cc
+++ b/src/selection.cc
@@ -167,6 +167,8 @@ Vector<Selection> compute_modified_ranges(Buffer& buffer, size_t timestamp)
kak_assert(std::is_sorted(ranges.begin() + prev_size, ranges.end(), compare_selections));
std::inplace_merge(ranges.begin(), ranges.begin() + prev_size, ranges.end(), compare_selections);
+ // The newly added ranges might be overlapping pre-existing ones
+ ranges.erase(merge_overlapping(ranges.begin(), ranges.end(), dummy, overlaps), ranges.end());
}
const auto end_coord = buffer.end_coord();