diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/process.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/src/process.c b/src/process.c index c8ee4b96ea..4d362b95d1 100644 --- a/src/process.c +++ b/src/process.c @@ -2911,21 +2911,24 @@ read_process_output (proc, channel) : coding->produced_char); chars_in_decoding_buf = 1; } -#ifdef VMS - else if (chars_allocated) + else { - /* Although we don't have to decode the received data, we must - move it to an area which we don't have to free. */ - if (! STRINGP (p->decoding_buf) - || STRING_BYTES (XSTRING (p->decoding_buf)) < nbytes) - p->decoding_buf = make_uninit_string (nbytes); - bcopy (chars, XSTRING (p->decoding_buf)->data, nbytes); - free (chars); - chars = XSTRING (p->decoding_buf)->data; +#ifdef VMS + if (chars_allocated) + { + /* Although we don't have to decode the received data, we + must move it to an area which we don't have to free. */ + if (! STRINGP (p->decoding_buf) + || STRING_BYTES (XSTRING (p->decoding_buf)) < nbytes) + p->decoding_buf = make_uninit_string (nbytes); + bcopy (chars, XSTRING (p->decoding_buf)->data, nbytes); + free (chars); + chars = XSTRING (p->decoding_buf)->data; + chars_in_decoding_buf = 1; + } +#endif nchars = multibyte_chars_in_text (chars, nbytes); - chars_in_decoding_buf = 1; } -#endif Vlast_coding_system_used = coding->symbol; @@ -3054,6 +3057,9 @@ read_process_output (proc, channel) if (! (BEGV <= PT && PT <= ZV)) Fwiden (); + if (NILP (current_buffer->enable_multibyte_characters)) + nchars = nbytes; + /* Insert before markers in case we are inserting where the buffer's mark is, and the user's next command is Meta-y. */ if (chars_in_decoding_buf) |