# HG changeset patch # User Kenichi Handa # Date 871186399 0 # Node ID 7ea957cd48e2b33a2c72e59815feca8664710458 # Parent b2c5e1bea50e457200946b2ab4877b7caf1ef8d0 (encode_terminal_code): Use safe_terminal_coding if terminal_coding seems to encode Emacs' internal code as is. (write_glyphs): Likewise. diff -r b2c5e1bea50e -r 7ea957cd48e2 src/term.c --- a/src/term.c Sun Aug 10 04:13:19 1997 +0000 +++ b/src/term.c Sun Aug 10 04:13:19 1997 +0000 @@ -828,8 +828,14 @@ buf = GLYPH_STRING (tbase, g); } - produced = encode_coding (&terminal_coding, buf, dst, - len, dst_end - dst, &processed); + if (CODING_MAY_REQUIRE_NO_CONVERSION (&terminal_coding)) + /* We had better avoid sending Emacs' internal code to + terminal. */ + produced = encode_coding (&safe_terminal_coding, buf, dst, + len, dst_end - dst, &processed); + else + produced = encode_coding (&terminal_coding, buf, dst, + len, dst_end - dst, &processed); if (processed < len) /* We get a carryover because the remaining output buffer is too short. We must break the loop here @@ -897,17 +903,21 @@ string += consumed; } /* We may have to output some codes to terminate the writing. */ - terminal_coding.last_block = 1; - produced = encode_coding (&terminal_coding, (char *)0, conversion_buffer, - 0, conversion_buffer_size, - &consumed); - if (produced > 0) + if (!CODING_MAY_REQUIRE_NO_CONVERSION (&terminal_coding)) { - fwrite (conversion_buffer, 1, produced, stdout); - if (ferror (stdout)) - clearerr (stdout); - if (termscript) - fwrite (conversion_buffer, 1, produced, termscript); + terminal_coding.last_block = 1; + produced = encode_coding (&terminal_coding, (char *)0, conversion_buffer, + 0, conversion_buffer_size, + &consumed); + + if (produced > 0) + { + fwrite (conversion_buffer, 1, produced, stdout); + if (ferror (stdout)) + clearerr (stdout); + if (termscript) + fwrite (conversion_buffer, 1, produced, termscript); + } } cmcheckmagic (); }