src/hb-aat-layout-feat-table.hh | 14 +++++++------- src/hb-aat-layout-trak-table.hh | 35 +++++++++++++++++++---------------- src/hb-dsalgs.hh | 8 +++++--- src/hb-ot-color-colr-table.hh | 18 ++++++------------ 4 files changed, 37 insertions(+), 38 deletions(-)
New commits: commit 929f07dbfc8b8c40771d27a502f6e5842c1c1e90 Author: Behdad Esfahbod <[email protected]> Date: Sat Nov 10 15:38:48 2018 -0500 Fix hb_bytes_t.cmp() Ouch! diff --git a/src/hb-dsalgs.hh b/src/hb-dsalgs.hh index ffa43870..e98566e7 100644 --- a/src/hb-dsalgs.hh +++ b/src/hb-dsalgs.hh @@ -530,10 +530,12 @@ struct hb_bytes_t inline int cmp (const hb_bytes_t &a) const { - if (len != a.len) - return (int) a.len - (int) len; + if (!len) return 0; /* glibc's memcmp() args are declared nonnull. Meh. */ - return memcmp (a.arrayZ, arrayZ, len); + int r = memcmp (a.arrayZ, arrayZ, len); + if (r) return r; + + return a.len < len ? -1 : a.len > len ? +1 : 0; } static inline int cmp (const void *pa, const void *pb) { commit 5547bfa9f2815df727fa524b0ea0f136a6f955b7 Merge: 3a9fa8c0 1d82b476 Author: Behdad Esfahbod <[email protected]> Date: Sat Nov 10 15:35:12 2018 -0500 Merge pull request #1376 from ebraminio/minor [colr/feat/trak] minor commit 1d82b4761d0a2e2e0be002e8a6bfe060f7b6dec3 Author: Ebrahim Byagowi <[email protected]> Date: Sat Nov 10 18:08:11 2018 +0330 [colr/feat/trak] minor diff --git a/src/hb-aat-layout-feat-table.hh b/src/hb-aat-layout-feat-table.hh index b670caab..87ab4abd 100644 --- a/src/hb-aat-layout-feat-table.hh +++ b/src/hb-aat-layout-feat-table.hh @@ -54,13 +54,6 @@ struct SettingName struct FeatureName { - inline bool sanitize (hb_sanitize_context_t *c, const void *base) const - { - TRACE_SANITIZE (this); - return_trace (likely (c->check_struct (this) && - (base+settingTable).sanitize (c, nSettings))); - } - enum { Exclusive = 0x8000, /* If set, the feature settings are mutually exclusive. */ NotDefault = 0x4000, /* If clear, then the setting with an index of 0 in @@ -75,6 +68,13 @@ struct FeatureName * as the default. */ }; + inline bool sanitize (hb_sanitize_context_t *c, const void *base) const + { + TRACE_SANITIZE (this); + return_trace (likely (c->check_struct (this) && + (base+settingTable).sanitize (c, nSettings))); + } + protected: HBUINT16 feature; /* Feature type. */ HBUINT16 nSettings; /* The number of records in the setting name array. */ diff --git a/src/hb-aat-layout-trak-table.hh b/src/hb-aat-layout-trak-table.hh index 68218ecb..3b55967c 100644 --- a/src/hb-aat-layout-trak-table.hh +++ b/src/hb-aat-layout-trak-table.hh @@ -171,15 +171,6 @@ struct trak inline bool has_data (void) const { return version.to_int () != 0; } - inline bool sanitize (hb_sanitize_context_t *c) const - { - TRACE_SANITIZE (this); - - return_trace (likely (c->check_struct (this) && - horizData.sanitize (c, this, this) && - vertData.sanitize (c, this, this))); - } - inline bool apply (hb_aat_apply_context_t *c) const { TRACE_APPLY (this); @@ -221,15 +212,27 @@ struct trak return_trace (true); } + inline bool sanitize (hb_sanitize_context_t *c) const + { + TRACE_SANITIZE (this); + + return_trace (likely (c->check_struct (this) && + version.major == 1 && + horizData.sanitize (c, this, this) && + vertData.sanitize (c, this, this))); + } + protected: - FixedVersion<> version; /* Version of the tracking table + FixedVersion<>version; /* Version of the tracking table * (0x00010000u for version 1.0). */ - HBUINT16 format; /* Format of the tracking table (set to 0). */ - OffsetTo<TrackData> horizData; /* Offset from start of tracking table to TrackData - * for horizontal text (or 0 if none). */ - OffsetTo<TrackData> vertData; /* Offset from start of tracking table to TrackData - * for vertical text (or 0 if none). */ - HBUINT16 reserved; /* Reserved. Set to 0. */ + HBUINT16 format; /* Format of the tracking table (set to 0). */ + OffsetTo<TrackData> + horizData; /* Offset from start of tracking table to TrackData + * for horizontal text (or 0 if none). */ + OffsetTo<TrackData> + vertData; /* Offset from start of tracking table to TrackData + * for vertical text (or 0 if none). */ + HBUINT16 reserved; /* Reserved. Set to 0. */ public: DEFINE_SIZE_STATIC (12); diff --git a/src/hb-ot-color-colr-table.hh b/src/hb-ot-color-colr-table.hh index b480af51..fa40223b 100644 --- a/src/hb-ot-color-colr-table.hh +++ b/src/hb-ot-color-colr-table.hh @@ -103,7 +103,12 @@ struct COLR unsigned int *count, /* IN/OUT. May be NULL. */ hb_ot_color_layer_t *layers /* OUT. May be NULL. */) const { - const BaseGlyphRecord &record = get_glyph_record (glyph); + const BaseGlyphRecord *rec = (BaseGlyphRecord *) bsearch (&glyph, + &(this+baseGlyphsZ), + numBaseGlyphs, + sizeof (BaseGlyphRecord), + BaseGlyphRecord::cmp); + const BaseGlyphRecord &record = rec ? *rec : Null (BaseGlyphRecord); hb_array_t<const LayerRecord> all_layers ((this+layersZ).arrayZ, numLayers); hb_array_t<const LayerRecord> glyph_layers = all_layers.sub_array (record.firstLayerIdx, @@ -129,17 +134,6 @@ struct COLR (this+layersZ).sanitize (c, numLayers))); } - private: - inline const BaseGlyphRecord &get_glyph_record (hb_codepoint_t glyph_id) const - { - const BaseGlyphRecord *rec = (BaseGlyphRecord *) bsearch (&glyph_id, - &(this+baseGlyphsZ), - numBaseGlyphs, - sizeof (BaseGlyphRecord), - BaseGlyphRecord::cmp); - return rec ? *rec : Null(BaseGlyphRecord); - } - protected: HBUINT16 version; /* Table version number (starts at 0). */ HBUINT16 numBaseGlyphs; /* Number of Base Glyph Records. */ _______________________________________________ HarfBuzz mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/harfbuzz
