diff --git a/src/hb-ft.cc b/src/hb-ft.cc index 6670d9a60de179a98ff9e465bb13e109c164f83a..1026d6824b552e75a12057bfc0ea4375578368f0 100644 --- a/src/hb-ft.cc +++ b/src/hb-ft.cc @@ -496,8 +496,10 @@ reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data) return nullptr; error = FT_Load_Sfnt_Table (ft_face, tag, 0, buffer, &length); - if (error) + if (error) { + free ((void*)buffer); return nullptr; + } return hb_blob_create ((const char *) buffer, length, HB_MEMORY_MODE_WRITABLE, diff --git a/src/hb-ot-shape.cc b/src/hb-ot-shape.cc index 6696ad885b2de805276127aed0d0b09b89342e54..70c9c63c61bd601f9e10e992d3e82d0c03546412 100644 --- a/src/hb-ot-shape.cc +++ b/src/hb-ot-shape.cc @@ -193,8 +193,10 @@ _hb_ot_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan, if (plan->shaper->data_create) { plan->data = plan->shaper->data_create (plan); - if (unlikely (!plan->data)) + if (unlikely (!plan->data)) { + free ((void*)plan); return nullptr; + } } return plan;