diff options
author | rcombs <rcombs@rcombs.me> | 2022-07-27 00:17:24 -0500 |
---|---|---|
committer | rcombs <rcombs@rcombs.me> | 2022-11-15 21:14:37 -0600 |
commit | da36a733342fef079d3785cf9aeffea959eeab49 (patch) | |
tree | 31842830d6d15e681b9d55344d08fb78c0ea1117 /libass/ass_fontselect.c | |
parent | bdcfdf89297b25148b2c3e56d73021b7dcd245aa (diff) | |
download | libass-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.c | 19 |
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, |