From f2ff9e88941024ca1ca03f8ea1404536bc3c1475 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 17 Oct 2011 21:13:44 +0200 Subject: [PATCH] Fix part 1 of bug #9771 with assertion violation in move_it_by_lines. src/xdisp.c (move_it_vertically_backward): Don't look for character position immediately after the newline when in a continuation line. --- src/ChangeLog | 3 +++ src/xdisp.c | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 53e67a30c3..07b0418b39 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -3,6 +3,9 @@ * xdisp.c (push_display_prop): Determine whether to record string or buffer position by IT->string, not by IT->method. Allow GET_FROM_DISPLAY_VECTOR as IT->method on entry. (Bug#9771, part 4) + (move_it_vertically_backward): Don't look for character position + immediately after the newline when in a continuation line. + (Bug#9771, part 1) 2011-10-15 Martin Rudalics diff --git a/src/xdisp.c b/src/xdisp.c index e796eb98f1..43907ccc03 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -8768,7 +8768,10 @@ move_it_vertically_backward (struct it *it, int dy) reordering. We want to get to the character position that is immediately after the newline of the previous line. */ - if (it->bidi_p && IT_CHARPOS (*it) > BEGV + if (it->bidi_p + && !it->continuation_lines_width + && !STRINGP (it->string) + && IT_CHARPOS (*it) > BEGV && FETCH_BYTE (IT_BYTEPOS (*it) - 1) != '\n') { EMACS_INT nl_pos = -- 2.20.1