From da36a733342fef079d3785cf9aeffea959eeab49 Mon Sep 17 00:00:00 2001 From: rcombs Date: Wed, 27 Jul 2022 00:17:24 -0500 Subject: ass_fontselect: fail on allocation failures --- libass/ass_fontselect.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'libass/ass_fontselect.c') diff --git a/libass/ass_fontselect.c b/libass/ass_fontselect.c index 4a7dc5e..88b9729 100644 --- a/libass/ass_fontselect.c +++ b/libass/ass_fontselect.c @@ -1092,10 +1092,16 @@ ass_fontselect_init(ASS_Library *library, FT_Library ftlibrary, size_t *num_emfo priv->path_default = path ? strdup(path) : NULL; priv->index_default = 0; + if (family && !priv->family_default) + goto fail; + if (path && !priv->path_default) + goto fail; + priv->embedded_provider = ass_embedded_fonts_add_provider(priv, num_emfonts); if (priv->embedded_provider == NULL) { ass_msg(library, MSGL_WARN, "failed to create embedded font provider"); + goto fail; } if (dfp >= ASS_FONTPROVIDER_AUTODETECT) { @@ -1118,6 +1124,19 @@ ass_fontselect_init(ASS_Library *library, FT_Library ftlibrary, size_t *num_emfo } return priv; + +fail: + if (priv->default_provider) + ass_font_provider_free(priv->default_provider); + if (priv->embedded_provider) + ass_font_provider_free(priv->embedded_provider); + + free(priv->family_default); + free(priv->path_default); + + free(priv); + + return NULL; } void ass_get_available_font_providers(ASS_Library *priv, -- cgit v1.2.3