Mercurial > emacs
changeset 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 | 709d28116a85 |
children | 0fa146cd9142 |
files | src/fileio.c |
diffstat | 1 files changed, 9 insertions(+), 24 deletions(-) [+] |
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;