From: Eli Zaretskii Date: Tue, 15 Sep 2020 15:44:01 +0000 (+0300) Subject: Avoid aborts in display_mode_element X-Git-Tag: emacs-28.0.90~6050 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f4b4166e0075943641cd75c5935959cdc157c585;p=emacs.git Avoid aborts in display_mode_element * src/xdisp.c (display_mode_element): Use parse_str_as_multibyte, not multibyte_chars_in_text, to determine whether mode-line spec shall be displayed as a multibyte or unibyte string. We cannot use multibyte_chars_in_text here because it aborts when it finds raw bytes in the spec string. (Bug#43409) --- diff --git a/src/xdisp.c b/src/xdisp.c index 10ddb53dba2..615f0ca7cf8 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -25641,8 +25641,10 @@ display_mode_element (struct it *it, int depth, int field_width, int precision, /* Non-ASCII characters in SPEC should cause mode-line element be displayed as a multibyte string. */ ptrdiff_t nbytes = strlen (spec); - if (multibyte_chars_in_text ((const unsigned char *)spec, - nbytes) != nbytes) + ptrdiff_t nchars, mb_nbytes; + parse_str_as_multibyte ((const unsigned char *)spec, nbytes, + &nchars, &mb_nbytes); + if (!(nbytes == nchars || nbytes != mb_nbytes)) multibyte = true; switch (mode_line_target)