From 486b111b207abc002c60ffe53b51eb28b7f5c66e Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Tue, 9 Dec 1997 04:12:03 +0000 Subject: [PATCH] (read_process_output): Fix previous change, i.e, if proc_encode_coding_system[p->outfd] is NULL, instead of allocating `struct coding_system' for encoding, just skip setting up coding system for encoding. Set Vlast_coding_system_used after some text is read. (send_process): Set Vlast_coding_system_used after deciding a coding system to be used for encoding. --- src/process.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/process.c b/src/process.c index d05071824de..ef0cd07d883 100644 --- a/src/process.c +++ b/src/process.c @@ -2807,15 +2807,17 @@ read_process_output (proc, channel) proc_decode_coding_system[channel] here. It is done in detect_coding called via decode_coding above. */ - /* If coding-system for encoding is not yet decided, we set it - as the same as coding-system for decoding. */ - if (NILP (p->encode_coding_system)) + /* If coding-system for encoding is not yet decided, we set + it as the same as coding-system for decoding. + + But, before doing that we must check if + proc_encode_coding_system[p->outfd] surely points to a + valid memory because p->outfd will be changed once EOF is + sent to the process. */ + if (NILP (p->encode_coding_system) + && proc_encode_coding_system[p->outfd]) { p->encode_coding_system = coding->symbol; - if (!proc_encode_coding_system[p->outfd]) - proc_encode_coding_system[p->outfd] - = ((struct coding_system *) - xmalloc (sizeof (struct coding_system))); setup_coding_system (coding->symbol, proc_encode_coding_system[p->outfd]); } @@ -2846,6 +2848,8 @@ read_process_output (proc, channel) } #endif + Vlast_coding_system_used = coding->symbol; + outstream = p->filter; if (!NILP (outstream)) { @@ -3047,6 +3051,8 @@ send_process (proc, buf, len, object) error ("Output file descriptor of %s is closed", procname); coding = proc_encode_coding_system[XINT (XPROCESS (proc)->outfd)]; + Vlast_coding_system_used = coding->symbol; + if (CODING_REQUIRE_ENCODING (coding)) { int require = encoding_buffer_size (coding, len); -- 2.39.2