From 99593a9de0595c12132c7a1546d8f1d357b472bf Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Tue, 20 Feb 2001 16:00:18 +0000 Subject: [PATCH] (Fwindow_end): Handle case that WINDOW's buffer is not equal to the current buffer. --- src/window.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/window.c b/src/window.c index 61c4d3c83b8..051ab8f400a 100644 --- a/src/window.c +++ b/src/window.c @@ -912,6 +912,7 @@ if it isn't already recorded.") { struct text_pos startp; struct it it; + struct buffer *old_buffer = NULL, *b = XBUFFER (buf); /* In case W->start is out of the range, use something reasonable. This situation occured when loading a file with @@ -927,10 +928,19 @@ if it isn't already recorded.") /* Cannot use Fvertical_motion because that function doesn't cope with variable-height lines. */ + if (b != current_buffer) + { + old_buffer = current_buffer; + set_buffer_internal (b); + } + start_display (&it, w, startp); move_it_vertically (&it, window_box_height (w)); move_it_past_eol (&it); value = make_number (IT_CHARPOS (it)); + + if (old_buffer) + set_buffer_internal (old_buffer); } else XSETINT (value, BUF_Z (XBUFFER (buf)) - XFASTINT (w->window_end_pos)); -- 2.39.5