diff --git a/src/cairo-type1-subset.c b/src/cairo-type1-subset.c index bbff33d92..e55575854 100644 --- a/src/cairo-type1-subset.c +++ b/src/cairo-type1-subset.c @@ -553,14 +553,24 @@ cairo_type1_font_subset_get_glyph_names_and_widths (cairo_type1_font_subset_t *f error = FT_Load_Glyph (font->face, i, FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP | FT_LOAD_IGNORE_TRANSFORM); - if (error != 0) + if (error != FT_Err_Ok) { + /* propagate fatal errors from FreeType */ + if (error == FT_Err_Out_Of_Memory) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + return CAIRO_INT_STATUS_UNSUPPORTED; + } font->glyphs[i].width = font->face->glyph->metrics.horiAdvance; error = FT_Get_Glyph_Name(font->face, i, buffer, sizeof buffer); - if (error != 0) + if (error != FT_Err_Ok) { + /* propagate fatal errors from FreeType */ + if (error == FT_Err_Out_Of_Memory) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + return CAIRO_INT_STATUS_UNSUPPORTED; + } font->glyphs[i].name = strdup (buffer); if (font->glyphs[i].name == NULL)