(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:
parent
bd503487d8
commit
a76ef35dce
1 changed files with 17 additions and 2 deletions
19
src/print.c
19
src/print.c
|
@ -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));
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue