]> git.eshelyaron.com Git - emacs.git/commitdiff
(print_string): If we are going to print a unibyte
authorKenichi Handa <handa@m17n.org>
Wed, 7 Feb 2001 04:24:14 +0000 (04:24 +0000)
committerKenichi Handa <handa@m17n.org>
Wed, 7 Feb 2001 04:24:14 +0000 (04:24 +0000)
string into a multibyte buffer, convert the string to multibyte by
str_to_multibyte.

src/print.c

index aca3116eb58fa4f0cbeca96580b09469336fd8a6..e9dd4ede83f28e948f7c0b6b72b73c95dfe773f3 100644 (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));