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));