提交 6bf9db4f 编写于 作者: B Birunthan Mohanathas 提交者: Behdad Esfahbod

[ft] Fix unsafe cast of FT_Done_Face in hb_ft_{face,font}_create_referenced (#289)

Prior to this change the function `FT_Error FT_Done_Face(FT_Face *)` was
called through a pointer with the signature `void (void *)` resulting in
undefined behaviour.
上级 0b8f3ab0
......@@ -89,11 +89,17 @@ _hb_ft_font_create (FT_Face ft_face, bool unref)
return ft_font;
}
static void
_hb_ft_face_destroy (FT_Face ft_face)
{
FT_Done_Face (ft_face);
}
static void
_hb_ft_font_destroy (hb_ft_font_t *ft_font)
{
if (ft_font->unref)
FT_Done_Face (ft_font->ft_face);
_hb_ft_face_destroy (ft_font->ft_face);
free (ft_font);
}
......@@ -526,7 +532,7 @@ hb_face_t *
hb_ft_face_create_referenced (FT_Face ft_face)
{
FT_Reference_Face (ft_face);
return hb_ft_face_create (ft_face, (hb_destroy_func_t) FT_Done_Face);
return hb_ft_face_create (ft_face, (hb_destroy_func_t) _hb_ft_face_destroy);
}
static void
......@@ -606,7 +612,7 @@ hb_font_t *
hb_ft_font_create_referenced (FT_Face ft_face)
{
FT_Reference_Face (ft_face);
return hb_ft_font_create (ft_face, (hb_destroy_func_t) FT_Done_Face);
return hb_ft_font_create (ft_face, (hb_destroy_func_t) _hb_ft_face_destroy);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册