From: Eli Zaretskii Date: Wed, 17 Jun 2015 17:18:11 +0000 (+0300) Subject: Avoid infloop in redisplay with tall images X-Git-Tag: emacs-25.0.90~1718 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4e53d722ae20544ea3c04ff91052af624ef58175;p=emacs.git 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. --- 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; }