Mercurial > emacs
diff src/callproc.c @ 30703:98dd8e9ba6ca
(Fcall_process): Terminate the unwind-protect around the
post-read-conversion of coding system.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Wed, 09 Aug 2000 07:51:57 +0000 |
parents | 7f8793e95bb0 |
children | 92f108b8b281 |
line wrap: on
line diff
--- a/src/callproc.c Wed Aug 09 07:51:31 2000 +0000 +++ b/src/callproc.c Wed Aug 09 07:51:57 2000 +0000 @@ -1,5 +1,5 @@ /* Synchronous subprocess invocation for GNU Emacs. - Copyright (C) 1985, 86,87,88,93,94,95, 1999 Free Software Foundation, Inc. + Copyright (C) 1985,86,87,88,93,94,95,99,2000 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -846,20 +846,26 @@ coding_free_composition_data (&process_coding); } - record_unwind_protect (save_excursion_restore, save_excursion_save ()); - inserted = PT - pt_orig; - TEMP_SET_PT_BOTH (pt_orig, pt_byte_orig); - if (SYMBOLP (process_coding.post_read_conversion) - && !NILP (Ffboundp (process_coding.post_read_conversion))) - call1 (process_coding.post_read_conversion, make_number (inserted)); + { + int post_read_count = specpdl_ptr - specpdl; + + record_unwind_protect (save_excursion_restore, save_excursion_save ()); + inserted = PT - pt_orig; + TEMP_SET_PT_BOTH (pt_orig, pt_byte_orig); + if (SYMBOLP (process_coding.post_read_conversion) + && !NILP (Ffboundp (process_coding.post_read_conversion))) + call1 (process_coding.post_read_conversion, make_number (inserted)); - Vlast_coding_system_used = process_coding.symbol; + Vlast_coding_system_used = process_coding.symbol; - /* If the caller required, let the buffer inherit the - coding-system used to decode the process output. */ - if (inherit_process_coding_system) - call1 (intern ("after-insert-file-set-buffer-file-coding-system"), - make_number (total_read)); + /* If the caller required, let the buffer inherit the + coding-system used to decode the process output. */ + if (inherit_process_coding_system) + call1 (intern ("after-insert-file-set-buffer-file-coding-system"), + make_number (total_read)); + + unbind_to (post_read_count, Qnil); + } } /* Wait for it to terminate, unless it already has. */