[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