diff options
Diffstat (limited to 'src/hb-unicode.cc')
-rw-r--r-- | src/hb-unicode.cc | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/src/hb-unicode.cc b/src/hb-unicode.cc index 9a6471e52..c1795dc7f 100644 --- a/src/hb-unicode.cc +++ b/src/hb-unicode.cc @@ -377,30 +377,20 @@ hb_unicode_funcs_set_##name##_func (hb_unicode_funcs_t *ufuncs, \ hb_destroy_func_t destroy) \ { \ if (hb_object_is_immutable (ufuncs)) \ - goto fail; \ - \ - if (!func) \ - { \ - if (destroy) \ - destroy (user_data); \ - destroy = nullptr; \ - user_data = ufuncs->parent->user_data.name; \ - } \ + return; \ \ if (ufuncs->destroy.name) \ ufuncs->destroy.name (ufuncs->user_data.name); \ \ - if (func) \ + if (func) { \ ufuncs->func.name = func; \ - else \ + ufuncs->user_data.name = user_data; \ + ufuncs->destroy.name = destroy; \ + } else { \ ufuncs->func.name = ufuncs->parent->func.name; \ - ufuncs->user_data.name = user_data; \ - ufuncs->destroy.name = destroy; \ - return; \ - \ -fail: \ - if (destroy) \ - destroy (user_data); \ + ufuncs->user_data.name = ufuncs->parent->user_data.name; \ + ufuncs->destroy.name = nullptr; \ + } \ } HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS |