Mercurial > emacs
changeset 35948:0c203af33b2d
(print_string): If we are going to print a unibyte
string into a multibyte buffer, convert the string to multibyte by
str_to_multibyte.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Wed, 07 Feb 2001 04:24:14 +0000 |
parents | 9d09efb7f382 |
children | 6f52e8c1039f |
files | src/print.c |
diffstat | 1 files changed, 17 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/print.c Wed Feb 07 04:23:59 2001 +0000 +++ b/src/print.c Wed Feb 07 04:24:14 2001 +0000 @@ -465,8 +465,23 @@ else if (EQ (printcharfun, Qt) ? ! NILP (buffer_defaults.enable_multibyte_characters) : ! NILP (current_buffer->enable_multibyte_characters)) - chars = multibyte_chars_in_text (XSTRING (string)->data, - STRING_BYTES (XSTRING (string))); + { + /* If unibyte string STRING contains 8-bit codes, we must + convert STRING to a multibyte string containing the same + character codes. */ + Lisp_Object newstr; + int bytes; + + chars = STRING_BYTES (XSTRING (string)); + bytes = parse_str_to_multibyte (XSTRING (string)->data, chars); + if (chars < bytes) + { + newstr = make_uninit_multibyte_string (chars, bytes); + bcopy (XSTRING (string)->data, XSTRING (newstr)->data, chars); + str_to_multibyte (XSTRING (newstr)->data, bytes, chars); + string = newstr; + } + } else chars = STRING_BYTES (XSTRING (string));