From f4d6e4b9af4cfe2fe684640f19682e4f954b7549 Mon Sep 17 00:00:00 2001 From: "Dr.Smile" Date: Fri, 18 Sep 2015 00:33:33 +0300 Subject: cache: remove ass_cache_cancel(), cache failures instead --- libass/ass_font.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'libass/ass_font.c') 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; -- cgit v1.2.3