]> git.eshelyaron.com Git - emacs.git/commitdiff
(print_string): Properly compute number of chars
authorKarl Heuer <kwzh@gnu.org>
Mon, 22 Jun 1998 17:39:25 +0000 (17:39 +0000)
committerKarl Heuer <kwzh@gnu.org>
Mon, 22 Jun 1998 17:39:25 +0000 (17:39 +0000)
in multibyte case, before calling strout.

src/print.c

index e60cdfb2fff41056bc4ca7a7db410768d3926416..8df254c4059828464a504b3327bc0a98cdd18494 100644 (file)
@@ -573,11 +573,24 @@ print_string (string, printcharfun)
      Lisp_Object printcharfun;
 {
   if (EQ (printcharfun, Qt) || NILP (printcharfun))
-    /* strout is safe for output to a frame (echo area) or to print_buffer.  */
-    strout (XSTRING (string)->data,
-           XSTRING (string)->size,
-           STRING_BYTES (XSTRING (string)),
-           printcharfun, STRING_MULTIBYTE (string));
+    {
+      int chars;
+
+      if (STRING_MULTIBYTE (string))
+       chars = XSTRING (string)->size;
+      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)));
+      else
+       chars = STRING_BYTES (XSTRING (string));
+
+      /* strout is safe for output to a frame (echo area) or to print_buffer.  */
+      strout (XSTRING (string)->data,
+             chars, STRING_BYTES (XSTRING (string)),
+             printcharfun, STRING_MULTIBYTE (string));
+    }
   else
     {
       /* Otherwise, string may be relocated by printing one char.