1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-24 06:20:43 -08:00

Handle Cairo errors in ftcrfont_open

* src/ftcrfont.c (ftcrfont_open): Handle Cairo errors (bug#41627).

(cherry picked from commit 954a4decfc)
This commit is contained in:
Pip Cet 2020-10-22 13:40:34 +02:00 committed by Eli Zaretskii
parent 29af10afe8
commit 0cdd6c9218

View file

@ -139,7 +139,8 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
FcPatternDestroy (pat);
font_face = cairo_ft_font_face_create_for_pattern (match);
if (!font_face)
if (!font_face
|| cairo_font_face_status (font_face) != CAIRO_STATUS_SUCCESS)
{
unblock_input ();
FcPatternDestroy (match);
@ -154,6 +155,18 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
cairo_font_face_destroy (font_face);
cairo_font_options_destroy (options);
unblock_input ();
if (!scaled_font
|| cairo_scaled_font_status (scaled_font) != CAIRO_STATUS_SUCCESS)
{
FcPatternDestroy (match);
return Qnil;
}
ft_face = cairo_ft_scaled_font_lock_face (scaled_font);
if (!ft_face)
{
FcPatternDestroy (match);
return Qnil;
}
font_object = font_build_object (VECSIZE (struct font_info),
AREF (entity, FONT_TYPE_INDEX),
@ -231,7 +244,6 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
font->descent = font->height - font->ascent;
}
ft_face = cairo_ft_scaled_font_lock_face (scaled_font);
if (XFIXNUM (AREF (entity, FONT_SIZE_INDEX)) == 0)
{
int upEM = ft_face->units_per_EM;