diff src/lread.c @ 67871:998f4ca6948d

(readevalloop): Set PT and ZV in the proper buffer, not the current one.
author Richard M. Stallman <rms@gnu.org>
date Wed, 28 Dec 2005 03:44:28 +0000
parents f18c2431b06b
children 28939487a2d5 ec395f552d45
line wrap: on
line diff
--- a/src/lread.c	Wed Dec 28 03:19:29 2005 +0000
+++ b/src/lread.c	Wed Dec 28 03:44:28 2005 +0000
@@ -1344,10 +1344,20 @@
       if (b != 0 && NILP (b->name))
 	error ("Reading from killed buffer");
 
+
       if (!NILP (start))
 	{
+	  /* Switch to the buffer we are reading from.  */
 	  record_unwind_protect (save_excursion_restore, save_excursion_save ());
+	  set_buffer_internal (b);
+
+	  /* Save point in it.  */
+	  record_unwind_protect (save_excursion_restore, save_excursion_save ());
+	  /* Save ZV in it.  */
 	  record_unwind_protect (save_restriction_restore, save_restriction_save ());
+	  /* Those get unbound after we read one expression.  */
+
+	  /* Set point and ZV around stuff to be read.  */
 	  Fgoto_char (start);
 	  Fnarrow_to_region (make_number (BEGV), end);
 	}