]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix infloop in redisplay due to truncated lines and invisible text
authorEli Zaretskii <eliz@gnu.org>
Sat, 8 Oct 2016 07:52:52 +0000 (10:52 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 8 Oct 2016 07:52:52 +0000 (10:52 +0300)
* 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.

src/xdisp.c

index 42c6fb75efa0613f78e2f34f7f281bb3ecfceda4..a13830c811e7a0e1e8bf9fc93d947d986b1c9d45 100644 (file)
@@ -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;