[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-26 90add18: Prevent aborts in line-move-visual
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] emacs-26 90add18: Prevent aborts in line-move-visual |
Date: |
Fri, 17 Nov 2017 14:38:29 -0500 (EST) |
branch: emacs-26
commit 90add182a4d7b42942722d6cffb1ca213e546a37
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>
Prevent aborts in line-move-visual
* src/indent.c (line_number_display_width): Avoid assertion
violations in init_iterator when the window's buffer was
temporarily switched without updating window-start. (Bug#29326)
---
src/indent.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/indent.c b/src/indent.c
index 192eec7..5f931a5 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1959,21 +1959,26 @@ line_number_display_width (struct window *w, int
*width, int *pixel_width)
else
{
struct it it;
- struct text_pos wstart;
+ struct text_pos startpos;
bool saved_restriction = false;
ptrdiff_t count = SPECPDL_INDEX ();
- SET_TEXT_POS_FROM_MARKER (wstart, w->start);
+ SET_TEXT_POS_FROM_MARKER (startpos, w->start);
void *itdata = bidi_shelve_cache ();
- /* We must start from window's start point, but it could be
- outside the accessible region. */
- if (wstart.charpos < BEGV || wstart.charpos > ZV)
+ /* We want to start from window's start point, but it could be
+ outside the accessible region, in which case we widen the
+ buffer temporarily. It could even be beyond the buffer's end
+ (Org mode's display of source code snippets is known to cause
+ that), in which case we just punt and start from point instead. */
+ if (startpos.charpos > Z)
+ SET_TEXT_POS (startpos, PT, PT_BYTE);
+ if (startpos.charpos < BEGV || startpos.charpos > ZV)
{
record_unwind_protect (save_restriction_restore,
save_restriction_save ());
Fwiden ();
saved_restriction = true;
}
- start_display (&it, w, wstart);
+ start_display (&it, w, startpos);
/* The call to move_it_by_lines below will not generate a line
number if the first line shown in the window is hscrolled
such that all of its display elements are out of view. So we
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-26 90add18: Prevent aborts in line-move-visual,
Eli Zaretskii <=