]> git.eshelyaron.com Git - emacs.git/commitdiff
(kill_workbuf_unwind): New function.
authorKenichi Handa <handa@m17n.org>
Wed, 28 May 2003 11:35:50 +0000 (11:35 +0000)
committerKenichi Handa <handa@m17n.org>
Wed, 28 May 2003 11:35:50 +0000 (11:35 +0000)
(Finsert_file_contents): On replacing, call
make_conversion_work_buffer with correct args, and call
record_unwind_protect with the first arg kill_workbuf_unwind.

src/fileio.c

index 674b954e4019730ba16dcec4c7d621a82f147ecd..24a3377f8e8d69a62a9270e9f7ef0e568a7bc8f8 100644 (file)
@@ -289,6 +289,18 @@ restore_point_unwind (location)
   Fset_marker (location, Qnil, Qnil);
   return Qnil;
 }
+
+/* Kill the working buffer for code conversion.  */
+
+static Lisp_Object
+kill_workbuf_unwind (workbuf)
+     Lisp_Object workbuf;
+{
+  if (! NILP (workbuf) && ! NILP (Fbuffer_live_p (workbuf)))
+    Fkill_buffer (workbuf);
+  return Qnil;
+}
+
 \f
 Lisp_Object Qexpand_file_name;
 Lisp_Object Qsubstitute_in_file_name;
@@ -4032,12 +4044,12 @@ actually used.  */)
       unsigned char *decoded;
       int temp;
       int this_count = BINDING_STACK_SIZE ();
+      int multibyte = ! NILP (current_buffer->enable_multibyte_characters);
       Lisp_Object conversion_buffer
-       = make_conversion_work_buffer (! NILP (current_buffer
-                                              ->enable_multibyte_characters));
+       = make_conversion_work_buffer (-1, multibyte);
       struct gcpro1;
 
-      record_unwind_protect (code_conversion_restore, save_excursion_save ());
+      record_unwind_protect (kill_workbuf_unwind, conversion_buffer);
 
       /* First read the whole file, performing code conversion into
         CONVERSION_BUFFER.  */