summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2018-07-07 10:45:45 +0300
committerEli Zaretskii <eliz@gnu.org>2018-07-07 10:45:45 +0300
commitc73cf3548e7166a4ccffc578699c394b360ed0f5 (patch)
tree364695c55dc999611b1c04bbfc2cff9f37716efa /src
parent130310893a41b925d620ee694ac9c2adcf5046ec (diff)
downloademacs-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.c11
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)