aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2022-01-02 21:36:13 +0200
committerEli Zaretskii2022-01-02 21:36:13 +0200
commit6e53178a37d65218818fac3da1beac33db6ab5eb (patch)
treea21a4b684b22fb5ef193c3195bbd566151cb3bf0 /src
parent83da3a09d0d8fe8f13f405c1ec780e70e94f7b0b (diff)
downloademacs-6e53178a37d65218818fac3da1beac33db6ab5eb.tar.gz
emacs-6e53178a37d65218818fac3da1beac33db6ab5eb.zip
Avoid inflooping when 'tab-bar-format' includes embedded newlines
* src/xdisp.c (tab_bar_height, redisplay_tab_bar): Support 'tab-bar-format' with embedded newlines. (Bug#52947)
Diffstat (limited to 'src')
-rw-r--r--src/xdisp.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 7c3885c975d..73edc0d7aaf 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -13508,11 +13508,15 @@ tab_bar_height (struct frame *f, int *n_rows, bool pixelwise)
13508 0, 0, 0, STRING_MULTIBYTE (f->desired_tab_bar_string)); 13508 0, 0, 0, STRING_MULTIBYTE (f->desired_tab_bar_string));
13509 it.paragraph_embedding = L2R; 13509 it.paragraph_embedding = L2R;
13510 13510
13511 clear_glyph_row (temp_row);
13511 while (!ITERATOR_AT_END_P (&it)) 13512 while (!ITERATOR_AT_END_P (&it))
13512 { 13513 {
13513 clear_glyph_row (temp_row);
13514 it.glyph_row = temp_row; 13514 it.glyph_row = temp_row;
13515 display_tab_bar_line (&it, -1); 13515 display_tab_bar_line (&it, -1);
13516 /* If the tab-bar string includes newlines, get past it, because
13517 display_tab_bar_line doesn't. */
13518 if (ITERATOR_AT_END_OF_LINE_P (&it))
13519 set_iterator_to_next (&it, true);
13516 } 13520 }
13517 clear_glyph_row (temp_row); 13521 clear_glyph_row (temp_row);
13518 13522
@@ -13638,6 +13642,10 @@ redisplay_tab_bar (struct frame *f)
13638 extra -= h; 13642 extra -= h;
13639 } 13643 }
13640 display_tab_bar_line (&it, height + h); 13644 display_tab_bar_line (&it, height + h);
13645 /* If the tab-bar string includes newlines, get past it,
13646 because display_tab_bar_line doesn't. */
13647 if (ITERATOR_AT_END_OF_LINE_P (&it))
13648 set_iterator_to_next (&it, true);
13641 } 13649 }
13642 } 13650 }
13643 else 13651 else