changeset 36231:9fa7c8e6a6d5

(Fwindow_end): Handle case that WINDOW's buffer is not equal to the current buffer.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 20 Feb 2001 16:00:18 +0000
parents 56577cf3e384
children ee15ecdb92e7
files src/window.c
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/window.c	Tue Feb 20 15:25:06 2001 +0000
+++ b/src/window.c	Tue Feb 20 16:00:18 2001 +0000
@@ -912,6 +912,7 @@
     {
       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 @@
 
       /* 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));