From: Eli Zaretskii Date: Sat, 8 Oct 2016 07:52:52 +0000 (+0300) Subject: Fix infloop in redisplay due to truncated lines and invisible text X-Git-Tag: emacs-25.1.90~139 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3566644a332f42c2fb68e93f04f2cec92917fcc9;p=emacs.git Fix infloop in redisplay due to truncated lines and invisible text * src/xdisp.c (forward_to_next_line_start): Don't call 'get_next_display_element' after finding the end of line. This avoids setting the row's end position to the wrong value when the next screen line begins with invisible text; that wrong value caused set_cursor_from_row position the cursor in the wrong screen line, and eventually triggered bug#24109. --- diff --git a/src/xdisp.c b/src/xdisp.c index 42c6fb75efa..a13830c811e 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -6298,9 +6298,10 @@ forward_to_next_line_start (struct it *it, bool *skipped_p, } else { - while (get_next_display_element (it) - && !newline_found_p) + while (!newline_found_p) { + if (!get_next_display_element (it)) + break; newline_found_p = ITERATOR_AT_END_OF_LINE_P (it); if (newline_found_p && it->bidi_p && bidi_it_prev) *bidi_it_prev = it->bidi_it;