summaryrefslogtreecommitdiff
path: root/src/xdisp.c
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2012-04-13 18:46:06 -0700
committerGlenn Morris <rgm@gnu.org>2012-04-13 18:46:06 -0700
commit35dc09a19c606f9e7a078df32d030451c7c90ba1 (patch)
tree8df2ade99ad8620568094d61bba9dd4ac8856c43 /src/xdisp.c
parent327732d994c98849c765659aa2164a7482b6beab (diff)
parentad3a2b411dc2b34f5d6fa434aee3ca56fa7a88e7 (diff)
downloademacs-35dc09a19c606f9e7a078df32d030451c7c90ba1.tar.gz
Merge from emacs-24, up to 2012-04-10T02:06:19Z!larsi@gnus.org
Diffstat (limited to 'src/xdisp.c')
-rw-r--r--src/xdisp.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index c6939a5dcf9..ea964f4dadc 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -16606,7 +16606,15 @@ find_last_unchanged_at_beg_row (struct window *w)
continued. */
&& !(MATRIX_ROW_END_CHARPOS (row) == first_changed_pos
&& (row->continued_p
- || row->exact_window_width_line_p)))
+ || row->exact_window_width_line_p))
+ /* If ROW->end is beyond ZV, then ROW->end is outdated and
+ needs to be recomputed, so don't consider this row as
+ unchanged. This happens when the last line was
+ bidi-reordered and was killed immediately before this
+ redisplay cycle. In that case, ROW->end stores the
+ buffer position of the first visual-order character of
+ the killed text, which is now beyond ZV. */
+ && CHARPOS (row->end.pos) <= ZV)
row_found = row;
/* Stop if last visible row. */