]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix assertion violations due to non-ASCII text in tabs
authorJuri Linkov <juri@linkov.net>
Sun, 15 Sep 2019 20:40:47 +0000 (23:40 +0300)
committerJuri Linkov <juri@linkov.net>
Sun, 15 Sep 2019 20:40:47 +0000 (23:40 +0300)
* src/xdisp.c (tab_bar_height, redisplay_tab_bar)
(display_tab_bar): If the Lisp string to be displayed in the
tab-bar window is multibyte, tell the display
engine to treat it as multibyte, instead of relying on the
initial determination by init_iterator (which is based on the
multibyteness of the current buffer).  (Bug#37385)

src/xdisp.c

index 9f999c7903147a449948089b9c8c5fb859163e13..e2a4df1c008e8e19a54ef32f03e3e720fb4ba1ab 100644 (file)
@@ -12740,7 +12740,7 @@ display_tab_bar (struct window *w)
       /* Display the item, pad with one space.  */
       if (it.current_x < it.last_visible_x)
        display_string (NULL, string, Qnil, 0, 0, &it,
-                       SCHARS (string) + 1, 0, 0, -1);
+                       SCHARS (string) + 1, 0, 0, STRING_MULTIBYTE (string));
     }
 
   /* Fill out the line with spaces.  */
@@ -12947,7 +12947,8 @@ tab_bar_height (struct frame *f, int *n_rows, bool pixelwise)
   temp_row->reversed_p = false;
   it.first_visible_x = 0;
   it.last_visible_x = WINDOW_PIXEL_WIDTH (w);
-  reseat_to_string (&it, NULL, f->desired_tab_bar_string, 0, 0, 0, -1);
+  reseat_to_string (&it, NULL, f->desired_tab_bar_string,
+                    0, 0, 0, STRING_MULTIBYTE (f->desired_tab_bar_string));
   it.paragraph_embedding = L2R;
 
   while (!ITERATOR_AT_END_P (&it))
@@ -13023,7 +13024,8 @@ redisplay_tab_bar (struct frame *f)
 
   /* Build a string that represents the contents of the tab-bar.  */
   build_desired_tab_bar_string (f);
-  reseat_to_string (&it, NULL, f->desired_tab_bar_string, 0, 0, 0, -1);
+  reseat_to_string (&it, NULL, f->desired_tab_bar_string, 0, 0, 0,
+                    STRING_MULTIBYTE (f->desired_tab_bar_string));
   /* FIXME: This should be controlled by a user option.  But it
      doesn't make sense to have an R2L tab bar if the menu bar cannot
      be drawn also R2L, and making the menu bar R2L is tricky due