summaryrefslogtreecommitdiffstats
path: root/libass/ass_fontselect.c
diff options
context:
space:
mode:
authorrcombs <rcombs@rcombs.me>2022-07-27 00:17:24 -0500
committerrcombs <rcombs@rcombs.me>2022-11-15 21:14:37 -0600
commitda36a733342fef079d3785cf9aeffea959eeab49 (patch)
tree31842830d6d15e681b9d55344d08fb78c0ea1117 /libass/ass_fontselect.c
parentbdcfdf89297b25148b2c3e56d73021b7dcd245aa (diff)
downloadlibass-da36a733342fef079d3785cf9aeffea959eeab49.tar.bz2
libass-da36a733342fef079d3785cf9aeffea959eeab49.tar.xz
ass_fontselect: fail on allocation failures
Diffstat (limited to 'libass/ass_fontselect.c')
-rw-r--r--libass/ass_fontselect.c19
1 files changed, 19 insertions, 0 deletions
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,