src/hb-ft.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
New commits: commit 6bf9db4f1e1d51f9acb5e37b89caa8f4d275e7ce Author: Birunthan Mohanathas <birunt...@mohanathas.com> Date: Mon Jul 11 13:38:23 2016 -0700 [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. diff --git a/src/hb-ft.cc b/src/hb-ft.cc index 2cad8c2..6c6749c 100644 --- a/src/hb-ft.cc +++ b/src/hb-ft.cc @@ -90,10 +90,16 @@ _hb_ft_font_create (FT_Face ft_face, bool unref) } 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); } _______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/harfbuzz