]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid aborts in display_mode_element
authorEli Zaretskii <eliz@gnu.org>
Tue, 15 Sep 2020 15:44:01 +0000 (18:44 +0300)
committerEli Zaretskii <eliz@gnu.org>
Tue, 15 Sep 2020 15:44:01 +0000 (18:44 +0300)
* 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)

src/xdisp.c

index 10ddb53dba235043b98e37033ae254c321bf09ac..615f0ca7cf85c90e1e9e10c26776a3baddff51df 100644 (file)
@@ -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)