From 932357b45cb6c88e5a74cc14934b1caeb2d666c7 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 25 Feb 2003 12:33:32 +0000 Subject: [PATCH] (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. --- src/ChangeLog | 8 ++++++++ src/xdisp.c | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 59b088cfc73..6add287016b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2003-02-25 Kim F. Storm + + * 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,Ad(Brv * keyboard.c (cancel_hourglass_unwind): Surround with diff --git a/src/xdisp.c b/src/xdisp.c index f9ad45445d4..457b3dd0ac9 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -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. */ -- 2.39.2