Mercurial > emacs
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