# HG changeset patch # User Kim F. Storm # Date 1121870375 0 # Node ID f151e7e7a4a84d1c5081514538e2266bd25cefad # Parent 709d28116a85476ef66bac620dc0038c368263ec (Fdo_auto_save, do_auto_save_unwind): Use make_save_value to unwind protect stream. diff -r 709d28116a85 -r f151e7e7a4a8 src/fileio.c --- 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;