]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid assertion violations in 'back_to_previous_visible_line_start'
authorEli Zaretskii <eliz@gnu.org>
Fri, 5 Aug 2022 12:53:06 +0000 (15:53 +0300)
committerEli Zaretskii <eliz@gnu.org>
Fri, 5 Aug 2022 12:53:06 +0000 (15:53 +0300)
* src/xdisp.c (init_iterator): Always initialize narrowed_begv to
zero, since SET_WITH_NARROWED_BEGV depends on it being non-zero as
an indication that long-line optimizations are in use.
(back_to_previous_visible_line_start): When long-line
optimizations are in effect, we may end up not on a newline.

src/xdisp.c

index 099efed2db1bac176cc614cef8dc94e81ae9d919..3ca0022a6d3ba3486b4e484b1ad6f3dccd76205c 100644 (file)
@@ -3473,8 +3473,9 @@ init_iterator (struct it *it, struct window *w,
                        &it->bidi_it);
        }
 
-      if (current_buffer->long_line_optimizations_p)
-       it->narrowed_begv = 0;
+      /* This is set only when long_line_optimizations_p is non-zero
+        for the current buffer.  */
+      it->narrowed_begv = 0;
 
       /* Compute faces etc.  */
       reseat (it, it->current.pos, true);
@@ -7412,7 +7413,7 @@ back_to_previous_visible_line_start (struct it *it)
   it->continuation_lines_width = 0;
 
   eassert (IT_CHARPOS (*it) >= BEGV);
-  eassert (it->narrowed_begv > BEGV
+  eassert (it->narrowed_begv > 0 /* long-line optimizations: all bets off */
           || IT_CHARPOS (*it) == BEGV
           || FETCH_BYTE (IT_BYTEPOS (*it) - 1) == '\n');
   CHECK_IT (it);