changeset 45835:aab759361c24

(Fset_window_configuration): Explicitly preserve the point value that new_current_buffer had at the start.
author Richard M. Stallman <rms@gnu.org>
date Sat, 15 Jun 2002 14:20:52 +0000
parents 25a6099362fe
children e4a48b5ab2fb
files src/window.c
diffstat 1 files changed, 7 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/window.c	Sat Jun 15 14:19:02 2002 +0000
+++ b/src/window.c	Sat Jun 15 14:20:52 2002 +0000
@@ -4941,6 +4941,7 @@
   Lisp_Object new_current_buffer;
   Lisp_Object frame;
   FRAME_PTR f;
+  int old_point = -1;
 
   while (!WINDOW_CONFIGURATIONP (configuration))
     wrong_type_argument (Qwindow_configuration_p, configuration);
@@ -4951,6 +4952,8 @@
   new_current_buffer = data->current_buffer;
   if (NILP (XBUFFER (new_current_buffer)->name))
     new_current_buffer = Qnil;
+  else
+    old_point = BUF_PT (XBUFFER (new_current_buffer));
 
   frame = XWINDOW (SAVED_WINDOW_N (saved_windows, 0)->window)->frame;
   f = XFRAME (frame);
@@ -5138,12 +5141,13 @@
       FRAME_ROOT_WINDOW (f) = data->root_window;
       /* Prevent "swapping out point" in the old selected window
 	 using the buffer that has been restored into it.
-	 That swapping out has already been done,
-	 near the beginning of this function.  */
+	 Use the point value from the beginning of this function
+	 since unshow_buffer (called from delete_all_subwindows)
+	 could have altered it.  */
       selected_window = Qnil;
       if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer))
 	set_marker_restricted (XWINDOW (data->current_window)->pointm,
-			       make_number (BUF_PT (XBUFFER (XWINDOW (data->current_window)->buffer))),
+			       old_point,
 			       XWINDOW (data->current_window)->buffer);
 		  
       Fselect_window (data->current_window);