diff options
Diffstat (limited to 'libass/ass_fontselect.c')
-rw-r--r-- | libass/ass_fontselect.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/libass/ass_fontselect.c b/libass/ass_fontselect.c index 1de1890..04a6cb4 100644 --- a/libass/ass_fontselect.c +++ b/libass/ass_fontselect.c @@ -210,7 +210,7 @@ void ass_font_provider_free(ASS_FontProvider *provider) // TODO: this should probably remove all fonts that belong // to this provider from the list - if (provider->funcs.destroy_provider) + if (provider && provider->funcs.destroy_provider) provider->funcs.destroy_provider(provider->priv); free(provider); } @@ -617,7 +617,7 @@ ass_embedded_fonts_add_provider(ASS_Library *lib, ASS_FontSelector *selector, ASS_FontSelector * ass_fontselect_init(ASS_Library *library, FT_Library ftlibrary, const char *family, - const char *path) + const char *path, const char *config, int fc) { ASS_FontSelector *priv = calloc(1, sizeof(ASS_FontSelector)); @@ -630,8 +630,9 @@ ass_fontselect_init(ASS_Library *library, ftlibrary); #ifdef CONFIG_FONTCONFIG - // XXX: for now, always add the fontconfig provider - priv->default_provider = ass_fontconfig_add_provider(library, priv, NULL); + if (fc != 0) + priv->default_provider = ass_fontconfig_add_provider(library, + priv, config); #endif return priv; @@ -665,9 +666,7 @@ void ass_fontselect_free(ASS_FontSelector *priv) // TODO: we should track all child font providers and // free them here -#ifdef CONFIG_FONTCONFIG ass_font_provider_free(priv->default_provider); -#endif ass_font_provider_free(priv->embedded_provider); free(priv); |