# HG changeset patch # User Kenichi Handa # Date 965807517 0 # Node ID 98dd8e9ba6ca7c82dde5a498781e4d525b223845 # Parent bbc21541dbedce5a1c14a5bdf502da7725127cae (Fcall_process): Terminate the unwind-protect around the post-read-conversion of coding system. diff -r bbc21541dbed -r 98dd8e9ba6ca src/callproc.c --- 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. */