summaryrefslogtreecommitdiffstats
path: root/libass/ass_font.c
diff options
context:
space:
mode:
authorDr.Smile <vabnick@gmail.com>2015-09-18 00:33:33 +0300
committerDr.Smile <vabnick@gmail.com>2016-06-30 23:13:53 +0300
commitf4d6e4b9af4cfe2fe684640f19682e4f954b7549 (patch)
treee5d817822df0f3448c0708924c7babd553856197 /libass/ass_font.c
parent25d65abce1a0fabe3c3bf81f1ee7ee7f24b91a4e (diff)
downloadlibass-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.c15
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;