diff options
-rw-r--r-- | src/window.c | 5 | ||||
-rw-r--r-- | src/xdisp.c | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/window.c b/src/window.c index 374ef0f838..753ebc16fb 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 diff --git a/src/xdisp.c b/src/xdisp.c index dc68cd48e5..d1e884820b 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -1317,8 +1317,9 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y, SET_TEXT_POS_FROM_MARKER (top, 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 (top) > ZV) + our backs. Also, someone might narrow-to-region and immediately + call a scroll function. */ + if (CHARPOS (top) > ZV || CHARPOS (top) < BEGV) SET_TEXT_POS (top, BEGV, BEGV_BYTE); /* If the top of the window is after CHARPOS, the latter is surely |