Use shared_ptr<hb_set_t> in one place
See if valgrind is happy...
This commit is contained in:
parent
a42a703cb6
commit
e9407a2bd2
|
@ -111,13 +111,10 @@ struct hb_closure_context_t :
|
||||||
|
|
||||||
if (!done_lookups_glyph_set->get (lookup_index))
|
if (!done_lookups_glyph_set->get (lookup_index))
|
||||||
{
|
{
|
||||||
hb_set_t* empty_set = hb_set_create ();
|
hb::shared_ptr<hb_set_t> empty_set {hb_set_create ()};
|
||||||
if (unlikely (!done_lookups_glyph_set->set (lookup_index, empty_set)))
|
if (unlikely (!done_lookups_glyph_set->set (lookup_index, empty_set)))
|
||||||
{
|
|
||||||
hb_set_destroy (empty_set);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
hb_set_clear (done_lookups_glyph_set->get (lookup_index));
|
hb_set_clear (done_lookups_glyph_set->get (lookup_index));
|
||||||
}
|
}
|
||||||
|
@ -171,7 +168,7 @@ struct hb_closure_context_t :
|
||||||
hb_closure_context_t (hb_face_t *face_,
|
hb_closure_context_t (hb_face_t *face_,
|
||||||
hb_set_t *glyphs_,
|
hb_set_t *glyphs_,
|
||||||
hb_map_t *done_lookups_glyph_count_,
|
hb_map_t *done_lookups_glyph_count_,
|
||||||
hb_hashmap_t<unsigned, hb_set_t *> *done_lookups_glyph_set_,
|
hb_hashmap_t<unsigned, hb::shared_ptr<hb_set_t>> *done_lookups_glyph_set_,
|
||||||
unsigned int nesting_level_left_ = HB_MAX_NESTING_LEVEL) :
|
unsigned int nesting_level_left_ = HB_MAX_NESTING_LEVEL) :
|
||||||
face (face_),
|
face (face_),
|
||||||
glyphs (glyphs_),
|
glyphs (glyphs_),
|
||||||
|
@ -195,7 +192,7 @@ struct hb_closure_context_t :
|
||||||
|
|
||||||
private:
|
private:
|
||||||
hb_map_t *done_lookups_glyph_count;
|
hb_map_t *done_lookups_glyph_count;
|
||||||
hb_hashmap_t<unsigned, hb_set_t *> *done_lookups_glyph_set;
|
hb_hashmap_t<unsigned, hb::shared_ptr<hb_set_t>> *done_lookups_glyph_set;
|
||||||
unsigned int lookup_count = 0;
|
unsigned int lookup_count = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1501,15 +1501,12 @@ hb_ot_layout_lookup_substitute_closure (hb_face_t *face,
|
||||||
hb_set_t *glyphs /* OUT */)
|
hb_set_t *glyphs /* OUT */)
|
||||||
{
|
{
|
||||||
hb_map_t done_lookups_glyph_count;
|
hb_map_t done_lookups_glyph_count;
|
||||||
hb_hashmap_t<unsigned, hb_set_t *> done_lookups_glyph_set;
|
hb_hashmap_t<unsigned, hb::shared_ptr<hb_set_t>> done_lookups_glyph_set;
|
||||||
OT::hb_closure_context_t c (face, glyphs, &done_lookups_glyph_count, &done_lookups_glyph_set);
|
OT::hb_closure_context_t c (face, glyphs, &done_lookups_glyph_count, &done_lookups_glyph_set);
|
||||||
|
|
||||||
const OT::SubstLookup& l = face->table.GSUB->table->get_lookup (lookup_index);
|
const OT::SubstLookup& l = face->table.GSUB->table->get_lookup (lookup_index);
|
||||||
|
|
||||||
l.closure (&c, lookup_index);
|
l.closure (&c, lookup_index);
|
||||||
|
|
||||||
for (auto _ : done_lookups_glyph_set.iter ())
|
|
||||||
hb_set_destroy (_.second);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1529,7 +1526,7 @@ hb_ot_layout_lookups_substitute_closure (hb_face_t *face,
|
||||||
hb_set_t *glyphs /* OUT */)
|
hb_set_t *glyphs /* OUT */)
|
||||||
{
|
{
|
||||||
hb_map_t done_lookups_glyph_count;
|
hb_map_t done_lookups_glyph_count;
|
||||||
hb_hashmap_t<unsigned, hb_set_t *> done_lookups_glyph_set;
|
hb_hashmap_t<unsigned, hb::shared_ptr<hb_set_t>> done_lookups_glyph_set;
|
||||||
OT::hb_closure_context_t c (face, glyphs, &done_lookups_glyph_count, &done_lookups_glyph_set);
|
OT::hb_closure_context_t c (face, glyphs, &done_lookups_glyph_count, &done_lookups_glyph_set);
|
||||||
const GSUB& gsub = *face->table.GSUB->table;
|
const GSUB& gsub = *face->table.GSUB->table;
|
||||||
|
|
||||||
|
@ -1551,9 +1548,6 @@ hb_ot_layout_lookups_substitute_closure (hb_face_t *face,
|
||||||
}
|
}
|
||||||
} while (iteration_count++ <= HB_CLOSURE_MAX_STAGES &&
|
} while (iteration_count++ <= HB_CLOSURE_MAX_STAGES &&
|
||||||
glyphs_length != glyphs->get_population ());
|
glyphs_length != glyphs->get_population ());
|
||||||
|
|
||||||
for (auto _ : done_lookups_glyph_set.iter ())
|
|
||||||
hb_set_destroy (_.second);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue