diff --git a/src/input_handler.cc b/src/input_handler.cc index f13c513e..36425eff 100644 --- a/src/input_handler.cc +++ b/src/input_handler.cc @@ -1754,7 +1754,8 @@ void scroll_window(Context& context, LineCount offset, bool mouse_dragging) win_pos.line = clamp(win_pos.line + offset, 0_line, line_count-1); - Selection& main_selection = context.selections().main(); + SelectionList& selections = context.selections(); + Selection& main_selection = selections.main(); const BufferCoord anchor = main_selection.anchor(); const BufferCoord cursor = main_selection.cursor(); @@ -1775,6 +1776,8 @@ void scroll_window(Context& context, LineCount offset, bool mouse_dragging) window.set_position(win_pos); main_selection = { new_anchor, new_cursor }; + + selections.sort_and_merge_overlapping(); } } diff --git a/test/regression/3478-crash-on-scroll/cmd b/test/regression/3478-crash-on-scroll/cmd new file mode 100644 index 00000000..f687bafe --- /dev/null +++ b/test/regression/3478-crash-on-scroll/cmd @@ -0,0 +1 @@ +%sfoo( diff --git a/test/regression/3478-crash-on-scroll/in b/test/regression/3478-crash-on-scroll/in new file mode 100644 index 00000000..0d55bed3 --- /dev/null +++ b/test/regression/3478-crash-on-scroll/in @@ -0,0 +1,2 @@ +foo +foo diff --git a/test/regression/3478-crash-on-scroll/out b/test/regression/3478-crash-on-scroll/out new file mode 100644 index 00000000..0d55bed3 --- /dev/null +++ b/test/regression/3478-crash-on-scroll/out @@ -0,0 +1,2 @@ +foo +foo