From 9583e0077d0a3a043f8b5bd23925014e04da8d32 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sun, 22 Jul 2018 22:40:32 -0700 Subject: [PATCH] Port more off of Sanitizer<> --- src/hb-face.cc | 4 ++-- src/hb-open-type-private.hh | 2 +- src/hb-ot-cmap-table.hh | 2 +- src/hb-ot-color-cbdt-table.hh | 4 ++-- src/hb-ot-color-svg-table.hh | 4 +--- src/hb-ot-glyf-table.hh | 8 ++++---- src/hb-ot-hmtx-table.hh | 10 +++++----- src/hb-ot-kern-table.hh | 2 +- src/hb-ot-layout.cc | 6 +++--- src/hb-ot-maxp-table.hh | 2 +- src/hb-ot-os2-table.hh | 2 +- src/hb-ot-post-table.hh | 2 +- src/hb-subset.cc | 4 +--- 13 files changed, 24 insertions(+), 28 deletions(-) diff --git a/src/hb-face.cc b/src/hb-face.cc index 3c22f654f..c492adc24 100644 --- a/src/hb-face.cc +++ b/src/hb-face.cc @@ -451,7 +451,7 @@ hb_face_get_upem (hb_face_t *face) void hb_face_t::load_upem (void) const { - hb_blob_t *head_blob = OT::Sanitizer().sanitize (reference_table (HB_OT_TAG_head)); + hb_blob_t *head_blob = OT::hb_sanitize_context_t().reference_table (this); const OT::head *head_table = head_blob->as (); upem = head_table->get_upem (); hb_blob_destroy (head_blob); @@ -495,7 +495,7 @@ hb_face_get_glyph_count (hb_face_t *face) void hb_face_t::load_num_glyphs (void) const { - hb_blob_t *maxp_blob = OT::Sanitizer().sanitize (reference_table (HB_OT_TAG_maxp)); + hb_blob_t *maxp_blob = OT::hb_sanitize_context_t().reference_table (this); const OT::maxp *maxp_table = maxp_blob->as (); num_glyphs = maxp_table->get_num_glyphs (); hb_blob_destroy (maxp_blob); diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh index 92a5142ee..9a059a4e7 100644 --- a/src/hb-open-type-private.hh +++ b/src/hb-open-type-private.hh @@ -346,7 +346,7 @@ struct hb_sanitize_context_t : } template - inline hb_blob_t *reference_table (hb_face_t *face, hb_tag_t tableTag = Type::tableTag) + inline hb_blob_t *reference_table (const hb_face_t *face, hb_tag_t tableTag = Type::tableTag) { return sanitize_blob (face->reference_table (tableTag)); } diff --git a/src/hb-ot-cmap-table.hh b/src/hb-ot-cmap-table.hh index 0ea37209a..22cdbaf33 100644 --- a/src/hb-ot-cmap-table.hh +++ b/src/hb-ot-cmap-table.hh @@ -894,7 +894,7 @@ struct cmap { inline void init (hb_face_t *face) { - this->blob = OT::Sanitizer().sanitize (face->reference_table (HB_OT_TAG_cmap)); + this->blob = OT::hb_sanitize_context_t().reference_table (face); const OT::cmap *cmap = this->blob->as (); const OT::CmapSubtable *subtable = nullptr; const OT::CmapSubtableFormat14 *subtable_uvs = nullptr; diff --git a/src/hb-ot-color-cbdt-table.hh b/src/hb-ot-color-cbdt-table.hh index d1dd9de47..21c2f4773 100644 --- a/src/hb-ot-color-cbdt-table.hh +++ b/src/hb-ot-color-cbdt-table.hh @@ -394,8 +394,8 @@ struct CBDT { upem = hb_face_get_upem (face); - cblc_blob = Sanitizer().sanitize (face->reference_table (HB_OT_TAG_CBLC)); - cbdt_blob = Sanitizer().sanitize (face->reference_table (HB_OT_TAG_CBDT)); + cblc_blob = hb_sanitize_context_t().reference_table (face); + cbdt_blob = hb_sanitize_context_t().reference_table (face); cbdt_len = hb_blob_get_length (cbdt_blob); if (hb_blob_get_length (cblc_blob) == 0) { diff --git a/src/hb-ot-color-svg-table.hh b/src/hb-ot-color-svg-table.hh index ed6cf9708..9bfd266c7 100644 --- a/src/hb-ot-color-svg-table.hh +++ b/src/hb-ot-color-svg-table.hh @@ -96,11 +96,9 @@ struct SVG { inline void init (hb_face_t *face) { - OT::Sanitizer sanitizer; - svg_blob = sanitizer.sanitize (face->reference_table (HB_OT_TAG_SVG)); + svg_blob = OT::hb_sanitize_context_t().reference_table (face); svg_len = hb_blob_get_length (svg_blob); svg = svg_blob->as (); - } inline void fini (void) diff --git a/src/hb-ot-glyf-table.hh b/src/hb-ot-glyf-table.hh index 89c867dfa..b670d792f 100644 --- a/src/hb-ot-glyf-table.hh +++ b/src/hb-ot-glyf-table.hh @@ -103,7 +103,7 @@ struct glyf static bool _add_head_and_set_loca_version (hb_subset_plan_t *plan, bool use_short_loca) { - hb_blob_t *head_blob = OT::Sanitizer().sanitize (hb_face_reference_table (plan->source, HB_OT_TAG_head)); + hb_blob_t *head_blob = OT::hb_sanitize_context_t().reference_table (plan->source); hb_blob_t *head_prime_blob = hb_blob_copy_writable_or_fail (head_blob); hb_blob_destroy (head_blob); @@ -236,7 +236,7 @@ struct glyf { memset (this, 0, sizeof (accelerator_t)); - hb_blob_t *head_blob = Sanitizer().sanitize (face->reference_table (HB_OT_TAG_head)); + hb_blob_t *head_blob = hb_sanitize_context_t().reference_table (face); const head *head_table = head_blob->as (); if (head_table == &Null(head) || (unsigned int) head_table->indexToLocFormat > 1 || head_table->glyphDataFormat != 0) { @@ -247,9 +247,9 @@ struct glyf short_offset = 0 == head_table->indexToLocFormat; hb_blob_destroy (head_blob); - loca_blob = Sanitizer().sanitize (face->reference_table (HB_OT_TAG_loca)); + loca_blob = hb_sanitize_context_t().reference_table (face); loca_table = loca_blob->as (); - glyf_blob = Sanitizer().sanitize (face->reference_table (HB_OT_TAG_glyf)); + glyf_blob = hb_sanitize_context_t().reference_table (face); glyf_table = glyf_blob->as (); num_glyphs = MAX (1u, hb_blob_get_length (loca_blob) / (short_offset ? 2 : 4)) - 1; diff --git a/src/hb-ot-hmtx-table.hh b/src/hb-ot-hmtx-table.hh index 2c6266453..29cbc3848 100644 --- a/src/hb-ot-hmtx-table.hh +++ b/src/hb-ot-hmtx-table.hh @@ -69,7 +69,7 @@ struct hmtxvmtx inline bool subset_update_header (hb_subset_plan_t *plan, unsigned int num_hmetrics) const { - hb_blob_t *src_blob = OT::Sanitizer ().sanitize (plan->source->reference_table (H::tableTag)); + hb_blob_t *src_blob = OT::hb_sanitize_context_t().reference_table (plan->source, H::tableTag); hb_blob_t *dest_blob = hb_blob_copy_writable_or_fail(src_blob); hb_blob_destroy (src_blob); @@ -195,7 +195,7 @@ struct hmtxvmtx bool got_font_extents = false; if (T::os2Tag) { - hb_blob_t *os2_blob = Sanitizer ().sanitize (face->reference_table (T::os2Tag)); + hb_blob_t *os2_blob = hb_sanitize_context_t().reference_table (face); const os2 *os2_table = os2_blob->as (); #define USE_TYPO_METRICS (1u<<7) if (0 != (os2_table->fsSelection & USE_TYPO_METRICS)) @@ -208,7 +208,7 @@ struct hmtxvmtx hb_blob_destroy (os2_blob); } - hb_blob_t *_hea_blob = Sanitizer ().sanitize (face->reference_table (H::tableTag)); + hb_blob_t *_hea_blob = hb_sanitize_context_t().reference_table (face); const H *_hea_table = _hea_blob->as (); num_advances = _hea_table->numberOfLongMetrics; if (!got_font_extents) @@ -222,7 +222,7 @@ struct hmtxvmtx has_font_extents = got_font_extents; - blob = Sanitizer ().sanitize (face->reference_table (T::tableTag)); + blob = hb_sanitize_context_t().reference_table (face, T::tableTag); /* Cap num_metrics() and num_advances() based on table length. */ unsigned int len = hb_blob_get_length (blob); @@ -240,7 +240,7 @@ struct hmtxvmtx } table = blob->as (); - var_blob = Sanitizer ().sanitize (face->reference_table (T::variationsTag)); + var_blob = hb_sanitize_context_t().reference_table (face, T::variationsTag); var_table = var_blob->as (); } diff --git a/src/hb-ot-kern-table.hh b/src/hb-ot-kern-table.hh index b0fdea4a7..b4d810952 100644 --- a/src/hb-ot-kern-table.hh +++ b/src/hb-ot-kern-table.hh @@ -362,7 +362,7 @@ struct kern { inline void init (hb_face_t *face) { - blob = Sanitizer().sanitize (face->reference_table (HB_OT_TAG_kern)); + blob = hb_sanitize_context_t().reference_table (face); table = blob->as (); table_length = blob->length; } diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index 3bfa19127..0eba88a62 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -54,13 +54,13 @@ _hb_ot_layout_create (hb_face_t *face) if (unlikely (!layout)) return nullptr; - layout->gdef_blob = OT::Sanitizer().sanitize (face->reference_table (HB_OT_TAG_GDEF)); + layout->gdef_blob = OT::hb_sanitize_context_t().reference_table (face); layout->gdef = layout->gdef_blob->as (); - layout->gsub_blob = OT::Sanitizer().sanitize (face->reference_table (HB_OT_TAG_GSUB)); + layout->gsub_blob = OT::hb_sanitize_context_t().reference_table (face); layout->gsub = layout->gsub_blob->as (); - layout->gpos_blob = OT::Sanitizer().sanitize (face->reference_table (HB_OT_TAG_GPOS)); + layout->gpos_blob = OT::hb_sanitize_context_t().reference_table (face); layout->gpos = layout->gpos_blob->as (); layout->math.init (face); diff --git a/src/hb-ot-maxp-table.hh b/src/hb-ot-maxp-table.hh index 390b60d72..d3849fb13 100644 --- a/src/hb-ot-maxp-table.hh +++ b/src/hb-ot-maxp-table.hh @@ -100,7 +100,7 @@ struct maxp inline bool subset (hb_subset_plan_t *plan) const { - hb_blob_t *maxp_blob = OT::Sanitizer().sanitize (hb_face_reference_table (plan->source, HB_OT_TAG_maxp)); + hb_blob_t *maxp_blob = OT::hb_sanitize_context_t().reference_table (plan->source); hb_blob_t *maxp_prime_blob = hb_blob_copy_writable_or_fail (maxp_blob); hb_blob_destroy (maxp_blob); diff --git a/src/hb-ot-os2-table.hh b/src/hb-ot-os2-table.hh index c52b7eb10..5aab56c41 100644 --- a/src/hb-ot-os2-table.hh +++ b/src/hb-ot-os2-table.hh @@ -51,7 +51,7 @@ struct os2 inline bool subset (hb_subset_plan_t *plan) const { - hb_blob_t *os2_blob = OT::Sanitizer().sanitize (hb_face_reference_table (plan->source, HB_OT_TAG_os2)); + hb_blob_t *os2_blob = OT::hb_sanitize_context_t().reference_table (plan->source); hb_blob_t *os2_prime_blob = hb_blob_create_sub_blob (os2_blob, 0, -1); // TODO(grieger): move to hb_blob_copy_writable_or_fail hb_blob_destroy (os2_blob); diff --git a/src/hb-ot-post-table.hh b/src/hb-ot-post-table.hh index fed43d470..1d3058018 100644 --- a/src/hb-ot-post-table.hh +++ b/src/hb-ot-post-table.hh @@ -110,7 +110,7 @@ struct post { index_to_offset.init (); - blob = Sanitizer().sanitize (face->reference_table (HB_OT_TAG_post)); + blob = hb_sanitize_context_t().reference_table (face); const post *table = blob->as (); unsigned int table_length = blob->length; diff --git a/src/hb-subset.cc b/src/hb-subset.cc index a65b58d26..308c7eb21 100644 --- a/src/hb-subset.cc +++ b/src/hb-subset.cc @@ -78,9 +78,7 @@ template static bool _subset (hb_subset_plan_t *plan) { - OT::Sanitizer sanitizer; - - hb_blob_t *source_blob = sanitizer.sanitize (plan->source->reference_table (TableType::tableTag)); + hb_blob_t *source_blob = OT::hb_sanitize_context_t().reference_table (plan->source); const TableType *table = source_blob->as (); hb_tag_t tag = TableType::tableTag;