Fix part 1 of bug #9771 with assertion violation in move_it_by_lines.
authorEli Zaretskii <eliz@gnu.org>
Mon, 17 Oct 2011 19:13:44 +0000 (21:13 +0200)
committerEli Zaretskii <eliz@gnu.org>
Mon, 17 Oct 2011 19:13:44 +0000 (21:13 +0200)
 src/xdisp.c (move_it_vertically_backward): Don't look for character position
 immediately after the newline when in a continuation line.

src/ChangeLog
src/xdisp.c

index 53e67a3..07b0418 100644 (file)
@@ -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  <rudalics@gmx.at>
 
index e796eb9..43907cc 100644 (file)
@@ -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 =