[subset] Fix memory leak in glyf subset.
Fixes fuzzer issue: https://oss-fuzz.com/testcase-detail/6525813890875392.
This commit is contained in:
parent
9286e12525
commit
28b05e1cb6
|
@ -98,11 +98,17 @@ struct glyf
|
||||||
hb_vector_t<unsigned> padded_offsets;
|
hb_vector_t<unsigned> padded_offsets;
|
||||||
unsigned num_glyphs = c->plan->num_output_glyphs ();
|
unsigned num_glyphs = c->plan->num_output_glyphs ();
|
||||||
if (unlikely (!padded_offsets.resize (num_glyphs)))
|
if (unlikely (!padded_offsets.resize (num_glyphs)))
|
||||||
|
{
|
||||||
|
hb_font_destroy (font);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
hb_vector_t<glyf_impl::SubsetGlyph> glyphs;
|
hb_vector_t<glyf_impl::SubsetGlyph> glyphs;
|
||||||
if (!_populate_subset_glyphs (c->plan, font, glyphs))
|
if (!_populate_subset_glyphs (c->plan, font, glyphs))
|
||||||
|
{
|
||||||
|
hb_font_destroy (font);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (font)
|
if (font)
|
||||||
hb_font_destroy (font);
|
hb_font_destroy (font);
|
||||||
|
@ -464,7 +470,10 @@ glyf::_create_font_for_instancing (const hb_subset_plan_t *plan) const
|
||||||
|
|
||||||
hb_vector_t<hb_variation_t> vars;
|
hb_vector_t<hb_variation_t> vars;
|
||||||
if (unlikely (!vars.alloc (plan->user_axes_location.get_population (), true)))
|
if (unlikely (!vars.alloc (plan->user_axes_location.get_population (), true)))
|
||||||
|
{
|
||||||
|
hb_font_destroy (font);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
for (auto _ : plan->user_axes_location)
|
for (auto _ : plan->user_axes_location)
|
||||||
{
|
{
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue