From 4e53d722ae20544ea3c04ff91052af624ef58175 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 17 Jun 2015 20:18:11 +0300 Subject: [PATCH] Avoid infloop in redisplay with tall images * src/xdisp.c (try_scrolling): Prevent an infloop when scrolling down near ZV. (Bug#20808) Call bidi_unshelve_cache to avoid memory leaks. Use IT_CHARPOS instead of CHARPOS. --- src/xdisp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index 7c153302803..25eed01ecfc 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -15094,11 +15094,13 @@ try_scrolling (Lisp_Object window, bool just_this_one_p, RESTORE_IT (&it, &it, it1data); move_it_by_lines (&it, 1); SAVE_IT (it1, it, it1data); - } while (line_bottom_y (&it1) - start_y < amount_to_scroll); + } while (IT_CHARPOS (it) < ZV + && line_bottom_y (&it1) - start_y < amount_to_scroll); + bidi_unshelve_cache (it1data, true); } /* If STARTP is unchanged, move it down another screen line. */ - if (CHARPOS (it.current.pos) == CHARPOS (startp)) + if (IT_CHARPOS (it) == CHARPOS (startp)) move_it_by_lines (&it, 1); startp = it.current.pos; } -- 2.39.2