From 77f1ed6cb665b06fc1cdd4e2707932f0b499d481 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 4 Dec 2010 19:32:32 -0500 Subject: [PATCH] Avoid infloop when scrolling conservatively (Bug#7537). * src/xdisp.c (try_scrolling): Avoid infloop if the first line is obscured due to a vscroll (Bug#7537). --- src/ChangeLog | 5 +++++ src/xdisp.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 025161cc395..95f7039eaf7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2010-12-05 Chong Yidong + + * xdisp.c (try_scrolling): Avoid infloop if the first line is + obscured due to a vscroll (Bug#7537). + 2010-12-02 Jan Djärv * nsterm.h (FRAME_NS_TOOLBAR_HEIGHT): Rename to FRAME_TOOLBAR_HEIGHT. diff --git a/src/xdisp.c b/src/xdisp.c index a416c8ff435..dbe3e443c67 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -12759,7 +12759,11 @@ try_scrolling (window, just_this_one_p, scroll_conservatively, /* If cursor ends up on a partially visible line, treat that as being off the bottom of the screen. */ - if (! cursor_row_fully_visible_p (w, extra_scroll_margin_lines <= 1, 0)) + if (! cursor_row_fully_visible_p (w, extra_scroll_margin_lines <= 1, 0) + /* It's possible that the cursor is on the first line of the + buffer, which is partially obscured due to a vscroll + (Bug#7537). In that case, avoid looping forever . */ + && extra_scroll_margin_lines < w->desired_matrix->nrows - 1) { clear_glyph_matrix (w->desired_matrix); ++extra_scroll_margin_lines; -- 2.39.2