]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid infloop in redisplay with tall images
authorEli Zaretskii <eliz@gnu.org>
Wed, 17 Jun 2015 17:18:11 +0000 (20:18 +0300)
committerEli Zaretskii <eliz@gnu.org>
Wed, 17 Jun 2015 17:18:11 +0000 (20:18 +0300)
* 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

index 7c153302803d6b0a6a2867c32eaea50537cb635f..25eed01ecfc6cc318b08fc24be5262e83d98c418 100644 (file)
@@ -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;
     }