From f4281e0a92a40746fa630fb15b877adaf3ff15b1 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 5 Nov 2009 17:58:41 -0500 Subject: [PATCH] Fix ref counting --- src/hb-ft.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/hb-ft.c b/src/hb-ft.c index 8a062c7..eecafef 100644 --- a/src/hb-ft.c +++ b/src/hb-ft.c @@ -182,16 +182,16 @@ hb_face_t * hb_ft_face_create_cached (FT_Face ft_face) { /* TODO: Not thread-safe */ - if (HB_LIKELY (ft_face->generic.data && ft_face->generic.finalizer == (FT_Generic_Finalizer) hb_face_destroy)) - return ft_face->generic.data; - - if (ft_face->generic.finalizer) - ft_face->generic.finalizer (ft_face->generic.data); + if (!HB_LIKELY (ft_face->generic.data && ft_face->generic.finalizer == (FT_Generic_Finalizer) hb_face_destroy)) + { + if (ft_face->generic.finalizer) + ft_face->generic.finalizer (ft_face->generic.data); - ft_face->generic.data = hb_ft_face_create (ft_face, NULL); - ft_face->generic.finalizer = (FT_Generic_Finalizer) hb_face_destroy; + ft_face->generic.data = hb_ft_face_create (ft_face, NULL); + ft_face->generic.finalizer = (FT_Generic_Finalizer) hb_face_destroy; + } - return ft_face->generic.data; + return hb_face_reference (ft_face->generic.data); } -- 2.7.4