hb_ot_layout_position_lookup (font, buffer, lookup_maps[1][i].index, lookup_maps[1][i].mask);
}
+ inline void finish (void) {
+ feature_infos.finish ();
+ feature_maps.finish ();
+ lookup_maps[0].finish ();
+ lookup_maps[1].finish ();
+ }
+
private:
hb_mask_t global_mask;
{
hb_ot_map_t map;
hb_ot_complex_shaper_t shaper;
+
+ inline void finish (void) { map.finish (); }
};
hb_ot_shape_plan_internal (&plan, font->face, &buffer->props, features, num_features);
hb_ot_shape_execute (&plan, font, buffer, features, num_features);
+
+ plan.finish ();
}
{
return (const Type *) ::bsearch (key, array, len, sizeof (Type), (hb_compare_func_t) Type::cmp);
}
+
+ inline void finish (void)
+ {
+ if (array != static_array)
+ free (array);
+ array = NULL;
+ allocated = len = 0;
+ }
};
template <typename Type>
old.finish ();
l.lock ();
}
- items.shrink (0);
+ items.finish ();
l.unlock ();
}