]> git.eshelyaron.com Git - emacs.git/commitdiff
(PRINTFINISH): Convert text to unibyte before
authorRichard M. Stallman <rms@gnu.org>
Wed, 24 Jun 1998 18:32:53 +0000 (18:32 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 24 Jun 1998 18:32:53 +0000 (18:32 +0000)
inserting in a unibyte buffer.

src/print.c

index 8df254c4059828464a504b3327bc0a98cdd18494..9cb8b1b960c6e401b0ac0cf4c4230701b2c7ee46 100644 (file)
@@ -280,26 +280,39 @@ glyph_to_str_cpy (glyphs, str)
    if (!CONSP (Vprint_gensym))                                 \
      Vprint_gensym_alist = Qnil
 
-#define PRINTFINISH                                    \
-   if (NILP (printcharfun))                            \
-     insert_1_both (print_buffer, print_buffer_pos,    \
-                   print_buffer_pos_byte, 0, 1, 0);    \
-   if (free_print_buffer)                              \
-     {                                                 \
-       xfree (print_buffer);                           \
-       print_buffer = 0;                               \
-     }                                                 \
-   unbind_to (specpdl_count, Qnil);                    \
-   if (MARKERP (original))                             \
-     set_marker_both (original, Qnil, PT, PT_BYTE);    \
-   if (old_point >= 0)                                 \
-     SET_PT_BOTH (old_point + (old_point >= start_point        \
-                              ? PT - start_point : 0), \
+#define PRINTFINISH                                                    \
+   if (NILP (printcharfun))                                            \
+     {                                                                 \
+       if (print_buffer_pos != print_buffer_pos_byte                   \
+          && NILP (current_buffer->enable_multibyte_characters))       \
+        {                                                              \
+          unsigned char *temp                                          \
+            = (unsigned char *) alloca (print_buffer_pos + 1);         \
+          copy_text (print_buffer, temp, print_buffer_pos_byte,        \
+                     1, 0);                                            \
+          insert_1_both (temp, print_buffer_pos,                       \
+                         print_buffer_pos, 0, 1, 0);                   \
+        }                                                              \
+       else                                                            \
+        insert_1_both (print_buffer, print_buffer_pos,                 \
+                       print_buffer_pos_byte, 0, 1, 0);                \
+     }                                                                 \
+   if (free_print_buffer)                                              \
+     {                                                                 \
+       xfree (print_buffer);                                           \
+       print_buffer = 0;                                               \
+     }                                                                 \
+   unbind_to (specpdl_count, Qnil);                                    \
+   if (MARKERP (original))                                             \
+     set_marker_both (original, Qnil, PT, PT_BYTE);                    \
+   if (old_point >= 0)                                                 \
+     SET_PT_BOTH (old_point + (old_point >= start_point                        \
+                              ? PT - start_point : 0),                 \
                  old_point_byte + (old_point_byte >= start_point_byte  \
                               ? PT_BYTE - start_point_byte : 0));      \
-   if (old != current_buffer)                          \
-     set_buffer_internal (old);                                \
-   if (!CONSP (Vprint_gensym))                         \
+   if (old != current_buffer)                                          \
+     set_buffer_internal (old);                                                \
+   if (!CONSP (Vprint_gensym))                                         \
      Vprint_gensym_alist = Qnil
 
 #define PRINTCHAR(ch) printchar (ch, printcharfun)