diff options
author | Dr.Smile <vabnick@gmail.com> | 2015-09-18 00:33:33 +0300 |
---|---|---|
committer | Dr.Smile <vabnick@gmail.com> | 2016-06-30 23:13:53 +0300 |
commit | f4d6e4b9af4cfe2fe684640f19682e4f954b7549 (patch) | |
tree | e5d817822df0f3448c0708924c7babd553856197 /libass/ass_font.c | |
parent | 25d65abce1a0fabe3c3bf81f1ee7ee7f24b91a4e (diff) | |
download | libass-f4d6e4b9af4cfe2fe684640f19682e4f954b7549.tar.bz2 libass-f4d6e4b9af4cfe2fe684640f19682e4f954b7549.tar.xz |
cache: remove ass_cache_cancel(), cache failures instead
Diffstat (limited to 'libass/ass_font.c')
-rw-r--r-- | libass/ass_font.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/libass/ass_font.c b/libass/ass_font.c index a4c45bd..c40ff1e 100644 --- a/libass/ass_font.c +++ b/libass/ass_font.c @@ -228,17 +228,18 @@ ASS_Font *ass_font_new(Cache *font_cache, ASS_Library *library, FT_Library ftlibrary, ASS_FontSelector *fontsel, ASS_FontDesc *desc) { - int error; ASS_Font *font; if (ass_cache_get(font_cache, desc, &font)) - return font; + return font->desc.family ? font : NULL; + if (!font) + return NULL; font->library = library; font->ftlibrary = ftlibrary; font->shaper_priv = NULL; font->n_faces = 0; ASS_FontDesc *new_desc = ass_cache_get_key(font); - font->desc.family = new_desc->family = strdup(desc->family); + font->desc.family = new_desc->family; font->desc.bold = desc->bold; font->desc.italic = desc->italic; font->desc.vertical = desc->vertical; @@ -247,11 +248,11 @@ ASS_Font *ass_font_new(Cache *font_cache, ASS_Library *library, font->v.x = font->v.y = 0; font->size = 0.; - error = add_face(fontsel, font, 0); + int error = add_face(fontsel, font, 0); if (error == -1) { - ass_cache_cancel(font); - free(font->desc.family); - return 0; + font->desc.family = NULL; + ass_cache_commit(font); + return NULL; } ass_cache_commit(font); return font; |