diff --git a/src/hb-blob.cc b/src/hb-blob.cc index fca3c910b..f09526659 100644 --- a/src/hb-blob.cc +++ b/src/hb-blob.cc @@ -293,6 +293,8 @@ hb_blob_make_immutable (hb_blob_t *blob) { if (hb_object_is_inert (blob)) return; + if (blob->immutable) + return; blob->immutable = true; } diff --git a/src/hb-face.cc b/src/hb-face.cc index 19eea4d34..fbab18aa3 100644 --- a/src/hb-face.cc +++ b/src/hb-face.cc @@ -325,6 +325,8 @@ hb_face_make_immutable (hb_face_t *face) { if (unlikely (hb_object_is_inert (face))) return; + if (face->immutable) + return; face->immutable = true; } diff --git a/src/hb-font.cc b/src/hb-font.cc index 9dcf6c123..77762f2d8 100644 --- a/src/hb-font.cc +++ b/src/hb-font.cc @@ -586,6 +586,8 @@ hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs) { if (unlikely (hb_object_is_inert (ffuncs))) return; + if (ffuncs->immutable) + return; ffuncs->immutable = true; } @@ -1444,6 +1446,8 @@ hb_font_make_immutable (hb_font_t *font) { if (unlikely (hb_object_is_inert (font))) return; + if (font->immutable) + return; if (font->parent) hb_font_make_immutable (font->parent); diff --git a/src/hb-unicode.cc b/src/hb-unicode.cc index bb1cd6821..0e8b520d0 100644 --- a/src/hb-unicode.cc +++ b/src/hb-unicode.cc @@ -308,6 +308,8 @@ hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs) { if (unlikely (hb_object_is_inert (ufuncs))) return; + if (ufuncs->immutable) + return; ufuncs->immutable = true; }