Fix ref counting

This commit is contained in:
Behdad Esfahbod 2009-11-05 17:58:41 -05:00
parent 6358ff45ae
commit f4281e0a92
1 changed files with 8 additions and 8 deletions

View File

@ -182,16 +182,16 @@ hb_face_t *
hb_ft_face_create_cached (FT_Face ft_face) hb_ft_face_create_cached (FT_Face ft_face)
{ {
/* TODO: Not thread-safe */ /* TODO: Not thread-safe */
if (HB_LIKELY (ft_face->generic.data && ft_face->generic.finalizer == (FT_Generic_Finalizer) hb_face_destroy)) 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 (ft_face->generic.finalizer) ft_face->generic.data = hb_ft_face_create (ft_face, NULL);
ft_face->generic.finalizer (ft_face->generic.data); ft_face->generic.finalizer = (FT_Generic_Finalizer) hb_face_destroy;
}
ft_face->generic.data = hb_ft_face_create (ft_face, NULL); return hb_face_reference (ft_face->generic.data);
ft_face->generic.finalizer = (FT_Generic_Finalizer) hb_face_destroy;
return ft_face->generic.data;
} }