From 96601ede589799cb84cec4a616467c9e08412509 Mon Sep 17 00:00:00 2001 From: "Dr.Smile" Date: Sat, 19 Sep 2015 03:08:29 +0300 Subject: cache: keep ref_count of all active objects nonzero --- libass/ass_font.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'libass/ass_font.c') diff --git a/libass/ass_font.c b/libass/ass_font.c index d9dc7bab..5889b490 100644 --- a/libass/ass_font.c +++ b/libass/ass_font.c @@ -229,8 +229,12 @@ ASS_Font *ass_font_new(Cache *font_cache, ASS_Library *library, ASS_FontDesc *desc) { ASS_Font *font; - if (ass_cache_get(font_cache, desc, &font)) - return font->desc.family ? font : NULL; + if (ass_cache_get(font_cache, desc, &font)) { + if (font->desc.family) + return font; + ass_cache_dec_ref(font); + return NULL; + } if (!font) return NULL; @@ -238,7 +242,7 @@ ASS_Font *ass_font_new(Cache *font_cache, ASS_Library *library, font->ftlibrary = ftlibrary; font->shaper_priv = NULL; font->n_faces = 0; - ASS_FontDesc *new_desc = ass_cache_get_key(font); + ASS_FontDesc *new_desc = ass_cache_key(font); font->desc.family = new_desc->family; font->desc.bold = desc->bold; font->desc.italic = desc->italic; @@ -252,6 +256,7 @@ ASS_Font *ass_font_new(Cache *font_cache, ASS_Library *library, if (error == -1) { font->desc.family = NULL; ass_cache_commit(font, 1); + ass_cache_dec_ref(font); return NULL; } ass_cache_commit(font, 1); -- cgit v1.2.3