diff options
author | Eli Zaretskii <eliz@gnu.org> | 2016-09-05 19:57:22 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2016-09-05 19:57:22 +0300 |
commit | 6acff25280dbb97b5e9ddfd872b33ceb36b0470a (patch) | |
tree | 24b7152457c11d14aefdf8952ce7d3500586be05 /src/window.c | |
parent | cfaf18a27c262694750400005e882f1cfc7ff2b0 (diff) | |
download | emacs-6acff25280dbb97b5e9ddfd872b33ceb36b0470a.tar.gz emacs-6acff25280dbb97b5e9ddfd872b33ceb36b0470a.tar.bz2 emacs-6acff25280dbb97b5e9ddfd872b33ceb36b0470a.zip |
Avoid assertion violations when scrolling narrowed buffer
* src/window.c (window_scroll_pixel_based):
* src/xdisp.c (pos_visible_p): Don't allow simulated redisplay to
start outside the accessible portion of the buffer. This avoids
assertion violations when some Lisp narrows the buffer to less
than the current window, and then attempts to scroll the buffer.
Diffstat (limited to 'src/window.c')
-rw-r--r-- | src/window.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/window.c b/src/window.c index 374ef0f838f..753ebc16fbf 100644 --- a/src/window.c +++ b/src/window.c @@ -4813,8 +4813,9 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, bool noerror) SET_TEXT_POS_FROM_MARKER (start, w->start); /* Scrolling a minibuffer window via scroll bar when the echo area shows long text sometimes resets the minibuffer contents behind - our backs. */ - if (CHARPOS (start) > ZV) + our backs. Also, someone might narrow-to-region and immediately + call a scroll function. */ + if (CHARPOS (start) > ZV || CHARPOS (start) < BEGV) SET_TEXT_POS (start, BEGV, BEGV_BYTE); /* If PT is not visible in WINDOW, move back one half of |