diff options
| author | Eli Zaretskii <eliz@gnu.org> | 2018-07-07 10:45:45 +0300 |
|---|---|---|
| committer | Eli Zaretskii <eliz@gnu.org> | 2018-07-07 10:45:45 +0300 |
| commit | c73cf3548e7166a4ccffc578699c394b360ed0f5 (patch) | |
| tree | 364695c55dc999611b1c04bbfc2cff9f37716efa /src | |
| parent | 130310893a41b925d620ee694ac9c2adcf5046ec (diff) | |
| download | emacs-c73cf3548e7166a4ccffc578699c394b360ed0f5.tar.gz | |
Fix recent change in window.c
* src/window.c (scroll_command): Fix minor inefficiency in
last change: don't call Fset_buffer if the buffer is already set to be
what we want. (Bug#31988)
Diffstat (limited to 'src')
| -rw-r--r-- | src/window.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/window.c b/src/window.c index 8d1aed46dff..d3c72570dd1 100644 --- a/src/window.c +++ b/src/window.c @@ -5652,12 +5652,17 @@ scroll_command (Lisp_Object window, Lisp_Object n, int direction) w = XWINDOW (window); other_window = ! EQ (window, selected_window); - /* If given window's buffer isn't current, make it current for - the moment. But don't screw up if window_scroll gets an error. */ + /* If given window's buffer isn't current, make it current for the + moment. If the window's buffer is the same, but it is not the + selected window, we need to save-excursion to avoid affecting + point in the selected window (which would cause the selected + window to scroll). Don't screw up if window_scroll gets an + error. */ if (other_window || XBUFFER (w->contents) != current_buffer) { record_unwind_protect_excursion (); - Fset_buffer (w->contents); + if (XBUFFER (w->contents) != current_buffer) + Fset_buffer (w->contents); } if (other_window) |
