Commit eff901b8 authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

Prevent infloops in redisplay due to truncate-lines and overlays

* src/xdisp.c (hscroll_window_tree): Avoid inflooping in
redisplay_window when a screen line ends in an overlay string with
a newline.  (Bug#25246)
parent 6eaadcc7
......@@ -13049,6 +13049,17 @@ hscroll_window_tree (Lisp_Object window)
init_to_row_start (&it, w, cursor_row);
it.last_visible_x = INFINITY;
move_it_in_display_line_to (&it, pt, -1, MOVE_TO_POS);
/* If the line ends in an overlay string with a newline,
we might infloop, because displaying the window will
want to put the cursor after the overlay, i.e. at X
coordinate of zero on the next screen line. So we
use the buffer position prior to the overlay string
instead. */
if (it.method == GET_FROM_STRING && pt > 1)
init_to_row_start (&it, w, cursor_row);
move_it_in_display_line_to (&it, pt - 1, -1, MOVE_TO_POS);
current_buffer = saved_current_buffer;
/* Position cursor in window. */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment