diff --git a/src/hb-font.cc b/src/hb-font.cc index 40d93ecc4..d549455ea 100644 --- a/src/hb-font.cc +++ b/src/hb-font.cc @@ -286,8 +286,11 @@ hb_font_funcs_set_##name##_func (hb_font_funcs_t *ffuncs, \ void *user_data, \ hb_destroy_func_t destroy) \ { \ - if (ffuncs->immutable) \ + if (ffuncs->immutable) { \ + if (destroy) \ + destroy (user_data); \ return; \ + } \ \ if (ffuncs->destroy.name) \ ffuncs->destroy.name (ffuncs->user_data.name); \ @@ -901,8 +904,11 @@ hb_font_set_funcs (hb_font_t *font, void *user_data, hb_destroy_func_t destroy) { - if (font->immutable) + if (font->immutable) { + if (destroy) + destroy (user_data); return; + } if (font->destroy) font->destroy (font->user_data); @@ -922,8 +928,12 @@ hb_font_set_funcs_data (hb_font_t *font, void *user_data, hb_destroy_func_t destroy) { - if (font->immutable) + /* Destroy user_data? */ + if (font->immutable) { + if (destroy) + destroy (user_data); return; + } if (font->destroy) font->destroy (font->user_data);