diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2018-05-08 02:47:42 -0700 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2018-05-08 02:47:42 -0700 |
commit | eba1c16a604d1be774f22541bf3e417f27a27c68 (patch) | |
tree | ca2c9f2a42be07b9aa80140e86f12c37b26d5ad8 | |
parent | b4fa50501414b7471e840f2ee6b9dfe87080b078 (diff) |
Always lock blob in sanitize. Remove blob->lock_as() in favor of blob->lock()
-rw-r--r-- | src/dump-emoji.cc | 4 | ||||
-rw-r--r-- | src/dump-fon.cc | 2 | ||||
-rw-r--r-- | src/hb-aat-layout.cc | 4 | ||||
-rw-r--r-- | src/hb-blob-private.hh | 6 | ||||
-rw-r--r-- | src/hb-face.cc | 8 | ||||
-rw-r--r-- | src/hb-open-type-private.hh | 8 | ||||
-rw-r--r-- | src/hb-ot-cmap-table.hh | 2 | ||||
-rw-r--r-- | src/hb-ot-color-cbdt-table.hh | 4 | ||||
-rw-r--r-- | src/hb-ot-color-sbix-table.hh | 2 | ||||
-rw-r--r-- | src/hb-ot-color-svg-table.hh | 2 | ||||
-rw-r--r-- | src/hb-ot-glyf-table.hh | 6 | ||||
-rw-r--r-- | src/hb-ot-hmtx-table.hh | 8 | ||||
-rw-r--r-- | src/hb-ot-kern-table.hh | 2 | ||||
-rw-r--r-- | src/hb-ot-layout.cc | 6 | ||||
-rw-r--r-- | src/hb-ot-post-table.hh | 2 | ||||
-rw-r--r-- | src/hb-subset.cc | 2 | ||||
-rw-r--r-- | src/main.cc | 2 |
17 files changed, 34 insertions, 36 deletions
diff --git a/src/dump-emoji.cc b/src/dump-emoji.cc index 47c6c98b..63af4a6a 100644 --- a/src/dump-emoji.cc +++ b/src/dump-emoji.cc @@ -240,11 +240,11 @@ int main (int argc, char **argv) OT::Sanitizer<OT::COLR> sanitizerCOLR; hb_blob_t* colr_blob = sanitizerCOLR.sanitize (face->reference_table (HB_OT_TAG_COLR)); - const OT::COLR *colr = colr_blob->lock_as<OT::COLR> (); + const OT::COLR *colr = colr_blob->as<OT::COLR> (); OT::Sanitizer<OT::CPAL> sanitizerCPAL; hb_blob_t* cpal_blob = sanitizerCPAL.sanitize (face->reference_table (HB_OT_TAG_CPAL)); - const OT::CPAL *cpal = cpal_blob->lock_as<OT::CPAL> (); + const OT::CPAL *cpal = cpal_blob->as<OT::CPAL> (); cairo_font_face_t *cairo_face; { diff --git a/src/dump-fon.cc b/src/dump-fon.cc index dc45d9c4..81525f42 100644 --- a/src/dump-fon.cc +++ b/src/dump-fon.cc @@ -542,7 +542,7 @@ int main (int argc, char** argv) { OT::Sanitizer<LE_IMAGE_DOS_HEADER> sanitizer; hb_blob_t *font_blob = sanitizer.sanitize (blob); - const LE_IMAGE_DOS_HEADER* dos_header = font_blob->lock_as<LE_IMAGE_DOS_HEADER> (); + const LE_IMAGE_DOS_HEADER* dos_header = font_blob->as<LE_IMAGE_DOS_HEADER> (); const NE_RESOURCE_TABLE &rtable = dos_header->get_os2_header ().get_resource_table (); int shift = rtable.get_shift_value (); diff --git a/src/hb-aat-layout.cc b/src/hb-aat-layout.cc index e6efaab4..7784fae3 100644 --- a/src/hb-aat-layout.cc +++ b/src/hb-aat-layout.cc @@ -118,11 +118,11 @@ _get_trak (hb_face_t *face, hb_blob_t **blob = nullptr) // OT::Sanitizer<AAT::morx> sanitizer; // sanitizer.set_num_glyphs (face->get_num_glyphs ()); // hb_blob_t *morx_blob = sanitizer.sanitize (face->reference_table (HB_AAT_TAG_morx)); -// morx_blob->lock_as<AAT::morx> (); +// morx_blob->as<AAT::morx> (); // if (0) // { -// morx_blob->lock_as<AAT::Lookup<OT::GlyphID> > ()->get_value (1, face->get_num_glyphs ()); +// morx_blob->as<AAT::Lookup<OT::GlyphID> > ()->get_value (1, face->get_num_glyphs ()); // } // } diff --git a/src/hb-blob-private.hh b/src/hb-blob-private.hh index f564351a..b72fa721 100644 --- a/src/hb-blob-private.hh +++ b/src/hb-blob-private.hh @@ -69,12 +69,6 @@ struct hb_blob_t { return unlikely (!data) ? &Null(Type) : reinterpret_cast<const Type *> (data); } - template <typename Type> - inline const Type* lock_as (void) - { - lock (); - return unlikely (!data) ? &Null(Type) : reinterpret_cast<const Type *> (data); - } public: hb_object_header_t header; diff --git a/src/hb-face.cc b/src/hb-face.cc index 9fc40d48..01271413 100644 --- a/src/hb-face.cc +++ b/src/hb-face.cc @@ -135,7 +135,7 @@ _hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void if (tag == HB_TAG_NONE) return hb_blob_reference (data->blob); - const OT::OpenTypeFontFile &ot_file = *data->blob->lock_as<OT::OpenTypeFontFile> (); + const OT::OpenTypeFontFile &ot_file = *data->blob->as<OT::OpenTypeFontFile> (); const OT::OpenTypeFontFace &ot_face = ot_file.get_face (data->index); const OT::OpenTypeTable &table = ot_face.get_table_by_tag (tag); @@ -426,7 +426,7 @@ void hb_face_t::load_upem (void) const { hb_blob_t *head_blob = OT::Sanitizer<OT::head>().sanitize (reference_table (HB_OT_TAG_head)); - const OT::head *head_table = head_blob->lock_as<OT::head> (); + const OT::head *head_table = head_blob->as<OT::head> (); upem = head_table->get_upem (); hb_blob_destroy (head_blob); } @@ -470,7 +470,7 @@ void hb_face_t::load_num_glyphs (void) const { hb_blob_t *maxp_blob = OT::Sanitizer<OT::maxp>().sanitize (reference_table (HB_OT_TAG_maxp)); - const OT::maxp *maxp_table = maxp_blob->lock_as<OT::maxp> (); + const OT::maxp *maxp_table = maxp_blob->as<OT::maxp> (); num_glyphs = maxp_table->get_num_glyphs (); hb_blob_destroy (maxp_blob); } @@ -500,7 +500,7 @@ hb_face_get_table_tags (hb_face_t *face, hb_face_for_data_closure_t *data = (hb_face_for_data_closure_t *) face->user_data; - const OT::OpenTypeFontFile &ot_file = *data->blob->lock_as<OT::OpenTypeFontFile> (); + const OT::OpenTypeFontFile &ot_file = *data->blob->as<OT::OpenTypeFontFile> (); const OT::OpenTypeFontFace &ot_face = ot_file.get_face (data->index); return ot_face.get_table_tags (start_offset, table_count, table_tags); diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh index 9f07b3f5..8bc74169 100644 --- a/src/hb-open-type-private.hh +++ b/src/hb-open-type-private.hh @@ -344,8 +344,12 @@ struct Sanitizer DEBUG_MSG_FUNC (SANITIZE, c->start, sane ? "PASSED" : "FAILED"); if (sane) + { + blob->lock (); return blob; - else { + } + else + { hb_blob_destroy (blob); return hb_blob_get_empty (); } @@ -1250,7 +1254,7 @@ struct hb_lazy_table_loader_t if (unlikely (!p)) { hb_blob_t *blob_ = OT::Sanitizer<T>().sanitize (face->reference_table (T::tableTag)); - p = const_cast<T *>(blob_->lock_as<T> ()); + p = const_cast<T *>(blob_->as<T> ()); if (!hb_atomic_ptr_cmpexch (const_cast<T **>(&instance), nullptr, p)) { hb_blob_destroy (blob_); diff --git a/src/hb-ot-cmap-table.hh b/src/hb-ot-cmap-table.hh index 438063e0..950a0ee1 100644 --- a/src/hb-ot-cmap-table.hh +++ b/src/hb-ot-cmap-table.hh @@ -661,7 +661,7 @@ struct cmap inline void init (hb_face_t *face) { this->blob = OT::Sanitizer<OT::cmap>().sanitize (face->reference_table (HB_OT_TAG_cmap)); - const OT::cmap *cmap = this->blob->lock_as<OT::cmap> (); + const OT::cmap *cmap = this->blob->as<OT::cmap> (); 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 52364ff7..f4207f2d 100644 --- a/src/hb-ot-color-cbdt-table.hh +++ b/src/hb-ot-color-cbdt-table.hh @@ -403,8 +403,8 @@ struct CBDT cbdt = nullptr; return; /* Not a bitmap font. */ } - cblc = cblc_blob->lock_as<CBLC> (); - cbdt = cbdt_blob->lock_as<CBDT> (); + cblc = cblc_blob->as<CBLC> (); + cbdt = cbdt_blob->as<CBDT> (); } diff --git a/src/hb-ot-color-sbix-table.hh b/src/hb-ot-color-sbix-table.hh index 17d6c730..09a9517c 100644 --- a/src/hb-ot-color-sbix-table.hh +++ b/src/hb-ot-color-sbix-table.hh @@ -102,7 +102,7 @@ struct sbix sanitizer.set_num_glyphs (num_glyphs); sbix_blob = sanitizer.sanitize (face->reference_table (HB_OT_TAG_sbix)); sbix_len = hb_blob_get_length (sbix_blob); - sbix_table = sbix_blob->lock_as<OT::sbix> (); + sbix_table = sbix_blob->as<OT::sbix> (); } diff --git a/src/hb-ot-color-svg-table.hh b/src/hb-ot-color-svg-table.hh index ccf4b9c4..ed6cf970 100644 --- a/src/hb-ot-color-svg-table.hh +++ b/src/hb-ot-color-svg-table.hh @@ -99,7 +99,7 @@ struct SVG OT::Sanitizer<OT::SVG> sanitizer; svg_blob = sanitizer.sanitize (face->reference_table (HB_OT_TAG_SVG)); svg_len = hb_blob_get_length (svg_blob); - svg = svg_blob->lock_as<OT::SVG> (); + svg = svg_blob->as<OT::SVG> (); } diff --git a/src/hb-ot-glyf-table.hh b/src/hb-ot-glyf-table.hh index 07169687..8c2bfd09 100644 --- a/src/hb-ot-glyf-table.hh +++ b/src/hb-ot-glyf-table.hh @@ -237,7 +237,7 @@ struct glyf memset (this, 0, sizeof (accelerator_t)); hb_blob_t *head_blob = Sanitizer<head>().sanitize (face->reference_table (HB_OT_TAG_head)); - const head *head_table = head_blob->lock_as<head> (); + const head *head_table = head_blob->as<head> (); if (head_table == &Null(head) || (unsigned int) head_table->indexToLocFormat > 1 || head_table->glyphDataFormat != 0) { /* head table is not present, or in an unknown format. Leave num_glyphs=0, that takes care of disabling us. */ @@ -248,9 +248,9 @@ struct glyf hb_blob_destroy (head_blob); loca_blob = Sanitizer<loca>().sanitize (face->reference_table (HB_OT_TAG_loca)); - loca_table = loca_blob->lock_as<loca> (); + loca_table = loca_blob->as<loca> (); glyf_blob = Sanitizer<glyf>().sanitize (face->reference_table (HB_OT_TAG_glyf)); - glyf_table = glyf_blob->lock_as<glyf> (); + glyf_table = glyf_blob->as<glyf> (); num_glyphs = MAX (1u, hb_blob_get_length (loca_blob) / (short_offset ? 2 : 4)) - 1; glyf_len = hb_blob_get_length (glyf_blob); diff --git a/src/hb-ot-hmtx-table.hh b/src/hb-ot-hmtx-table.hh index 02419a88..c07763e6 100644 --- a/src/hb-ot-hmtx-table.hh +++ b/src/hb-ot-hmtx-table.hh @@ -196,7 +196,7 @@ struct hmtxvmtx if (T::os2Tag) { hb_blob_t *os2_blob = Sanitizer<os2> ().sanitize (face->reference_table (T::os2Tag)); - const os2 *os2_table = os2_blob->lock_as<os2> (); + const os2 *os2_table = os2_blob->as<os2> (); #define USE_TYPO_METRICS (1u<<7) if (0 != (os2_table->fsSelection & USE_TYPO_METRICS)) { @@ -209,7 +209,7 @@ struct hmtxvmtx } hb_blob_t *_hea_blob = Sanitizer<H> ().sanitize (face->reference_table (H::tableTag)); - const H *_hea_table = _hea_blob->lock_as<H> (); + const H *_hea_table = _hea_blob->as<H> (); num_advances = _hea_table->numberOfLongMetrics; if (!got_font_extents) { @@ -238,10 +238,10 @@ struct hmtxvmtx hb_blob_destroy (blob); blob = hb_blob_get_empty (); } - table = blob->lock_as<hmtxvmtx> (); + table = blob->as<hmtxvmtx> (); var_blob = Sanitizer<HVARVVAR> ().sanitize (face->reference_table (T::variationsTag)); - var_table = var_blob->lock_as<HVARVVAR> (); + var_table = var_blob->as<HVARVVAR> (); } inline void fini (void) diff --git a/src/hb-ot-kern-table.hh b/src/hb-ot-kern-table.hh index 71b368a8..9366dbf4 100644 --- a/src/hb-ot-kern-table.hh +++ b/src/hb-ot-kern-table.hh @@ -363,7 +363,7 @@ struct kern inline void init (hb_face_t *face) { blob = Sanitizer<kern>().sanitize (face->reference_table (HB_OT_TAG_kern)); - table = blob->lock_as<kern> (); + table = blob->as<kern> (); table_length = hb_blob_get_length (blob); } inline void fini (void) diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index a4673fc5..d5efde29 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -59,13 +59,13 @@ _hb_ot_layout_create (hb_face_t *face) return nullptr; layout->gdef_blob = OT::Sanitizer<OT::GDEF>().sanitize (face->reference_table (HB_OT_TAG_GDEF)); - layout->gdef = layout->gdef_blob->lock_as<OT::GDEF> (); + layout->gdef = layout->gdef_blob->as<OT::GDEF> (); layout->gsub_blob = OT::Sanitizer<OT::GSUB>().sanitize (face->reference_table (HB_OT_TAG_GSUB)); - layout->gsub = layout->gsub_blob->lock_as<OT::GSUB> (); + layout->gsub = layout->gsub_blob->as<OT::GSUB> (); layout->gpos_blob = OT::Sanitizer<OT::GPOS>().sanitize (face->reference_table (HB_OT_TAG_GPOS)); - layout->gpos = layout->gpos_blob->lock_as<OT::GPOS> (); + layout->gpos = layout->gpos_blob->as<OT::GPOS> (); layout->math.init (face); layout->fvar.init (face); diff --git a/src/hb-ot-post-table.hh b/src/hb-ot-post-table.hh index d1793d35..bb5f9b31 100644 --- a/src/hb-ot-post-table.hh +++ b/src/hb-ot-post-table.hh @@ -110,7 +110,7 @@ struct post inline void init (hb_face_t *face) { blob = Sanitizer<post>().sanitize (face->reference_table (HB_OT_TAG_post)); - const post *table = blob->lock_as<post> (); + const post *table = blob->as<post> (); unsigned int table_length = hb_blob_get_length (blob); version = table->version.to_int (); diff --git a/src/hb-subset.cc b/src/hb-subset.cc index bca56770..d6295a48 100644 --- a/src/hb-subset.cc +++ b/src/hb-subset.cc @@ -87,7 +87,7 @@ _subset (hb_subset_plan_t *plan) OT::Sanitizer<TableType> sanitizer; hb_blob_t *source_blob = sanitizer.sanitize (plan->source->reference_table (TableType::tableTag)); - const TableType *table = source_blob->lock_as<TableType> (); + const TableType *table = source_blob->as<TableType> (); hb_tag_t tag = TableType::tableTag; hb_bool_t result = false; diff --git a/src/main.cc b/src/main.cc index 2976c895..9a187366 100644 --- a/src/main.cc +++ b/src/main.cc @@ -56,7 +56,7 @@ main (int argc, char **argv) Sanitizer<OpenTypeFontFile> sanitizer; hb_blob_t *font_blob = sanitizer.sanitize (blob); - const OpenTypeFontFile* sanitized = font_blob->lock_as<OpenTypeFontFile> (); + const OpenTypeFontFile* sanitized = font_blob->as<OpenTypeFontFile> (); if (sanitized == &Null (OpenTypeFontFile)) { printf ("Sanitization of the file wasn't successful. Exit"); |