[HarfBuzz] harfbuzz: Branch 'master'
Behdad Esfahbod
behdad at kemper.freedesktop.org
Sat Jun 2 22:46:32 UTC 2018
src/hb-ot-map-private.hh | 40 ++++++++++++++++++++++------------------
src/hb-ot-map.cc | 11 +++++++++++
src/hb-ot-post-table.hh | 3 ++-
src/hb-ot-shape-private.hh | 10 ++++++++--
src/hb-ot-shape.cc | 2 ++
src/hb-subset.cc | 2 ++
6 files changed, 47 insertions(+), 21 deletions(-)
New commits:
commit f9abbf83b6404bc9eb0c0983f562c9dbba1ef57c
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Sat Jun 2 15:30:59 2018 -0700
Fix fallout from 975bdd5ef562e37655067b703b2b9ca7481f4985
Ouch!
diff --git a/src/hb-ot-map-private.hh b/src/hb-ot-map-private.hh
index 22f27495..4aaf3283 100644
--- a/src/hb-ot-map-private.hh
+++ b/src/hb-ot-map-private.hh
@@ -78,7 +78,26 @@ struct hb_ot_map_t
pause_func_t pause_func;
};
- hb_ot_map_t (void) { memset (this, 0, sizeof (*this)); }
+ inline void init (void)
+ {
+ memset (this, 0, sizeof (*this));
+
+ features.init ();
+ for (unsigned int table_index = 0; table_index < 2; table_index++)
+ {
+ lookups[table_index].init ();
+ stages[table_index].init ();
+ }
+ }
+ inline void fini (void)
+ {
+ features.fini ();
+ for (unsigned int table_index = 0; table_index < 2; table_index++)
+ {
+ lookups[table_index].fini ();
+ stages[table_index].fini ();
+ }
+ }
inline hb_mask_t get_global_mask (void) const { return global_mask; }
@@ -129,15 +148,6 @@ struct hb_ot_map_t
HB_INTERNAL void substitute (const struct hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const;
HB_INTERNAL void position (const struct hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const;
- inline void fini (void) {
- features.fini ();
- for (unsigned int table_index = 0; table_index < 2; table_index++)
- {
- lookups[table_index].fini ();
- stages[table_index].fini ();
- }
- }
-
public:
hb_tag_t chosen_script[2];
bool found_script[2];
@@ -171,6 +181,8 @@ struct hb_ot_map_builder_t
HB_INTERNAL hb_ot_map_builder_t (hb_face_t *face_,
const hb_segment_properties_t *props_);
+ HB_INTERNAL ~hb_ot_map_builder_t (void);
+
HB_INTERNAL void add_feature (hb_tag_t tag, unsigned int value,
hb_ot_map_feature_flags_t flags);
@@ -186,14 +198,6 @@ struct hb_ot_map_builder_t
const int *coords,
unsigned int num_coords);
- inline void fini (void) {
- feature_infos.fini ();
- for (unsigned int table_index = 0; table_index < 2; table_index++)
- {
- stages[table_index].fini ();
- }
- }
-
private:
HB_INTERNAL void add_lookups (hb_ot_map_t &m,
diff --git a/src/hb-ot-map.cc b/src/hb-ot-map.cc
index 504f0945..46bf2db0 100644
--- a/src/hb-ot-map.cc
+++ b/src/hb-ot-map.cc
@@ -43,6 +43,10 @@ hb_ot_map_builder_t::hb_ot_map_builder_t (hb_face_t *face_,
{
memset (this, 0, sizeof (*this));
+ feature_infos.init ();
+ for (unsigned int table_index = 0; table_index < 2; table_index++)
+ stages[table_index].init ();
+
face = face_;
props = *props_;
@@ -63,6 +67,13 @@ hb_ot_map_builder_t::hb_ot_map_builder_t (hb_face_t *face_,
}
}
+hb_ot_map_builder_t::~hb_ot_map_builder_t (void)
+{
+ feature_infos.fini ();
+ for (unsigned int table_index = 0; table_index < 2; table_index++)
+ stages[table_index].fini ();
+}
+
void hb_ot_map_builder_t::add_feature (hb_tag_t tag, unsigned int value,
hb_ot_map_feature_flags_t flags)
{
diff --git a/src/hb-ot-post-table.hh b/src/hb-ot-post-table.hh
index ab3c0535..5f42751d 100644
--- a/src/hb-ot-post-table.hh
+++ b/src/hb-ot-post-table.hh
@@ -109,12 +109,13 @@ struct post
{
inline void init (hb_face_t *face)
{
+ index_to_offset.init ();
+
blob = Sanitizer<post>().sanitize (face->reference_table (HB_OT_TAG_post));
const post *table = blob->as<post> ();
unsigned int table_length = blob->length;
version = table->version.to_int ();
- index_to_offset.init ();
if (version != 0x00020000)
return;
diff --git a/src/hb-ot-shape-private.hh b/src/hb-ot-shape-private.hh
index c217af0c..d6898263 100644
--- a/src/hb-ot-shape-private.hh
+++ b/src/hb-ot-shape-private.hh
@@ -59,7 +59,14 @@ struct hb_ot_shape_plan_t
inline void substitute (hb_font_t *font, hb_buffer_t *buffer) const { map.substitute (this, font, buffer); }
inline void position (hb_font_t *font, hb_buffer_t *buffer) const { map.position (this, font, buffer); }
- void fini (void) { map.fini (); }
+ void init (void)
+ {
+ memset (this, 0, sizeof (*this));
+ map.init ();
+ }
+ void fini (void) {
+ map.fini ();
+ }
};
struct hb_ot_shape_planner_t
@@ -75,7 +82,6 @@ struct hb_ot_shape_planner_t
props (master_plan->props),
shaper (nullptr),
map (face, &props) {}
- ~hb_ot_shape_planner_t (void) { map.fini (); }
inline void compile (hb_ot_shape_plan_t &plan,
const int *coords,
diff --git a/src/hb-ot-shape.cc b/src/hb-ot-shape.cc
index cf87b7c9..c20b110e 100644
--- a/src/hb-ot-shape.cc
+++ b/src/hb-ot-shape.cc
@@ -180,6 +180,8 @@ _hb_ot_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan,
if (unlikely (!plan))
return nullptr;
+ plan->init ();
+
hb_ot_shape_planner_t planner (shape_plan);
planner.shaper = hb_ot_shape_complex_categorize (&planner);
diff --git a/src/hb-subset.cc b/src/hb-subset.cc
index 4d2dc293..6d388e29 100644
--- a/src/hb-subset.cc
+++ b/src/hb-subset.cc
@@ -133,6 +133,8 @@ _hb_subset_face_data_create (void)
if (unlikely (!data))
return nullptr;
+ data->tables.init ();
+
return data;
}
More information about the HarfBuzz
mailing list