changeset 7526:bf357bdc648e

(Fdo_auto_save): Save listdesc as an integer, only if open. (do_auto_save_unwind): Corresponding changes.
author Richard M. Stallman <rms@gnu.org>
date Tue, 17 May 1994 09:46:59 +0000
parents 5b784d881c0f
children 1f09079e18c4
files src/fileio.c
diffstat 1 files changed, 6 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/fileio.c	Tue May 17 09:43:47 1994 +0000
+++ b/src/fileio.c	Tue May 17 09:46:59 1994 +0000
@@ -3475,11 +3475,10 @@
 }
 
 static Lisp_Object
-do_auto_save_unwind (stream)  /* used as unwind-protect function */
-     Lisp_Object stream;
+do_auto_save_unwind (desc)  /* used as unwind-protect function */
+     Lisp_Object desc;
 {
-  close (*(int *)XPNTR (stream));
-  xfree (XPNTR (stream));
+  close (XINT (desc));
   return Qnil;
 }
 
@@ -3536,15 +3535,10 @@
     }
   else
     listdesc = -1;
-
-  /* We may not be able to store STREAM itself as a Lisp_Object pointer
-     since that is guaranteed to work only for data that has been malloc'd.
-     So malloc a full-size pointer, and record the address of that pointer.  */
-  ptr = (int *) xmalloc (sizeof (int));
-  *ptr = listdesc;
-  XSET (lispstream, Lisp_Internal_Stream, (int) ptr);
   
-  record_unwind_protect (do_auto_save_unwind, lispstream);
+  /* Arrange to close that file whether or not we get an error.  */
+  if (listdesc >= 0)
+    record_unwind_protect (do_auto_save_unwind, make_number (listdesc));
 
   /* First, save all files which don't have handlers.  If Emacs is
      crashing, the handlers may tweak what is causing Emacs to crash