diff src/fileio.c @ 64535:f151e7e7a4a8

(Fdo_auto_save, do_auto_save_unwind): Use make_save_value to unwind protect stream.
author Kim F. Storm <storm@cua.dk>
date Wed, 20 Jul 2005 14:39:35 +0000
parents a8fa7c632ee4
children a0d1312ede66 187d6a1f84f7
line wrap: on
line diff
--- a/src/fileio.c	Wed Jul 20 14:39:13 2005 +0000
+++ b/src/fileio.c	Wed Jul 20 14:39:35 2005 +0000
@@ -5818,13 +5818,13 @@
 }
 
 static Lisp_Object
-do_auto_save_unwind (stream)  /* used as unwind-protect function */
-     Lisp_Object stream;
+do_auto_save_unwind (arg)  /* used as unwind-protect function */
+     Lisp_Object arg;
 {
+  FILE *stream = (FILE *) XSAVE_VALUE (arg)->pointer;
   auto_saving = 0;
-  if (!NILP (stream))
-    fclose ((FILE *) (XFASTINT (XCAR (stream)) << 16
-		      | XFASTINT (XCDR (stream))));
+  if (stream != NULL)
+    fclose (stream);
   return Qnil;
 }
 
@@ -5869,8 +5869,7 @@
   int auto_saved = 0;
   int do_handled_files;
   Lisp_Object oquit;
-  FILE *stream;
-  Lisp_Object lispstream;
+  FILE *stream = NULL;
   int count = SPECPDL_INDEX ();
   int orig_minibuffer_auto_raise = minibuffer_auto_raise;
   int old_message_p = 0;
@@ -5922,24 +5921,10 @@
 	}
 
       stream = fopen (SDATA (listfile), "w");
-      if (stream != NULL)
-	{
-	  /* Arrange to close that file whether or not we get an error.
-	     Also reset auto_saving to 0.  */
-	  lispstream = Fcons (Qnil, Qnil);
-	  XSETCARFASTINT (lispstream, (EMACS_UINT)stream >> 16);
-	  XSETCDRFASTINT (lispstream, (EMACS_UINT)stream & 0xffff);
-	}
-      else
-	lispstream = Qnil;
     }
-  else
-    {
-      stream = NULL;
-      lispstream = Qnil;
-    }
-
-  record_unwind_protect (do_auto_save_unwind, lispstream);
+
+  record_unwind_protect (do_auto_save_unwind,
+			 make_save_value (stream, 0));
   record_unwind_protect (do_auto_save_unwind_1,
 			 make_number (minibuffer_auto_raise));
   minibuffer_auto_raise = 0;