Fix FT_Face generic finalizer
authorBehdad Esfahbod <behdad@behdad.org>
Fri, 6 Nov 2009 01:17:53 +0000 (20:17 -0500)
committerBehdad Esfahbod <behdad@behdad.org>
Fri, 6 Nov 2009 01:17:53 +0000 (20:17 -0500)
src/hb-ft.c

index bf05f4d..83eb2db 100644 (file)
@@ -179,17 +179,23 @@ hb_ft_face_create (FT_Face           ft_face,
   return face;
 }
 
+static void
+hb_ft_face_finalize (FT_Face ft_face)
+{
+  hb_face_destroy (ft_face->generic.data);
+}
+
 hb_face_t *
 hb_ft_face_create_cached (FT_Face ft_face)
 {
   /* TODO: Not thread-safe */
-  if (HB_UNLIKELY (!ft_face->generic.data || ft_face->generic.finalizer != (FT_Generic_Finalizer) hb_face_destroy))
+  if (HB_UNLIKELY (!ft_face->generic.data || ft_face->generic.finalizer != (FT_Generic_Finalizer) hb_ft_face_finalize))
   {
     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.finalizer = (FT_Generic_Finalizer) hb_ft_face_finalize;
   }
 
   return hb_face_reference (ft_face->generic.data);