(redisplay_window): Fix infinite loop in redisplay.
authorKim F. Storm <storm@cua.dk>
Tue, 25 Feb 2003 12:33:32 +0000 (12:33 +0000)
committerKim F. Storm <storm@cua.dk>
Tue, 25 Feb 2003 12:33:32 +0000 (12:33 +0000)
If centering point failed to make whole line visible and vscroll
is non-zero, disable vscroll and try centering point again.

src/ChangeLog
src/xdisp.c

index 59b088c..6add287 100644 (file)
@@ -1,3 +1,11 @@
+2003-02-25  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (redisplay_window): Fix infinite loop in redisplay.
+       If centering point failed to make whole line visible and vscroll
+       is non-zero, disable vscroll and try centering point again.
+
+       * lread.c (read1): Accept `single space' syntax like (? x).
+
 2003-02-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * keyboard.c (cancel_hourglass_unwind): Surround with
index f9ad454..457b3dd 100644 (file)
@@ -10822,6 +10822,14 @@ redisplay_window (window, just_this_one_p)
 
   if (!make_cursor_line_fully_visible (w))
     {
+      /* If vscroll is enabled, disable it and try again.  */
+      if (w->vscroll)
+       {
+         w->vscroll = 0;
+         clear_glyph_matrix (w->desired_matrix);
+         goto recenter;
+       }
+      
       /* If centering point failed to make the whole line visible,
         put point at the top instead.  That has to make the whole line
         visible, if it can be done.  */