(print_string): If we are going to print a unibyte

string into a multibyte buffer, convert the string to multibyte by
str_to_multibyte.
This commit is contained in:
Kenichi Handa 2001-02-07 04:24:14 +00:00
parent bd503487d8
commit a76ef35dce

View file

@ -465,8 +465,23 @@ print_string (string, printcharfun)
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));