summaryrefslogtreecommitdiff
path: root/src/fontset.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2023-05-09 08:20:57 +0300
committerEli Zaretskii <eliz@gnu.org>2023-05-09 08:20:57 +0300
commitd94ea9efca663510ce2cf8c6df327404d92afa0a (patch)
tree726d16c92531f524d0093c41aa8e7375fbc22c10 /src/fontset.c
parent387ddc0ccc1b21f612b9106bafec63170ede30e6 (diff)
downloademacs-d94ea9efca663510ce2cf8c6df327404d92afa0a.tar.gz
emacs-d94ea9efca663510ce2cf8c6df327404d92afa0a.tar.bz2
emacs-d94ea9efca663510ce2cf8c6df327404d92afa0a.zip
Avoid crashes in --without-all build trying to scale non-ASCII char
* src/fontset.c (face_for_char): Display a non-ASCII character as glyphless if the ASCII face has no fontset. (Bug#63283)
Diffstat (limited to 'src/fontset.c')
-rw-r--r--src/fontset.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/fontset.c b/src/fontset.c
index f196dee8259..c0e00cfa346 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -967,6 +967,15 @@ face_for_char (struct frame *f, struct face *face, int c,
#endif
}
+ /* If the parent face has no fontset we could work with, and has no
+ font, just return that same face, so that the caller will
+ consider the character to have no font capable of displaying it,
+ and display it as "glyphless". That is certainly better than
+ violating the assertion below or crashing when assertions are not
+ compiled in. */
+ if (face->fontset < 0 && !face->font)
+ return face->id;
+
eassert (fontset_id_valid_p (face->fontset));
fontset = FONTSET_FROM_ID (face->fontset);
eassert (!BASE_FONTSET_P (fontset));