Fix bug #8468 with redisplay when scroll-margin > 0.
authorEli Zaretskii <eliz@gnu.org>
Mon, 11 Apr 2011 15:59:30 +0000 (18:59 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 11 Apr 2011 15:59:30 +0000 (18:59 +0300)
 src/xdisp.c (redisplay_window): Don't try to determine the character
 position of the scroll margin if the window start point w->startp
 is outside the buffer's accessible region.

src/ChangeLog
src/xdisp.c

index 6e9a169..c164c6b 100644 (file)
@@ -1,3 +1,9 @@
+2011-04-11  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (redisplay_window): Don't try to determine the character
+       position of the scroll margin if the window start point w->startp
+       is outside the buffer's accessible region.
+
 2011-03-30  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (syms_of_xdisp) <scroll-conservatively>: Document the
index 9e33173..2b032bd 100644 (file)
@@ -14248,7 +14248,14 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
 
       /* If there is a scroll margin at the top of the window, find
         its character position.  */
-      if (margin)
+      if (margin
+         /* Cannot call start_display if startp is not in the
+            accessible region of the buffer.  This can happen when we
+            have just switched to a different buffer and/or changed
+            its restriction.  In that case, startp is initialized to
+            the character position 1 (BEG) because we did not yet
+            have chance to display the buffer even once.  */
+         && BEGV <= CHARPOS (startp) && CHARPOS (startp) <= ZV)
        {
          struct it it1;