diff options
Diffstat (limited to 'pango/opentype/hb-ot-layout-gsubgpos-private.hh')
-rw-r--r-- | pango/opentype/hb-ot-layout-gsubgpos-private.hh | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/pango/opentype/hb-ot-layout-gsubgpos-private.hh b/pango/opentype/hb-ot-layout-gsubgpos-private.hh index 91703da3..0e15cf60 100644 --- a/pango/opentype/hb-ot-layout-gsubgpos-private.hh +++ b/pango/opentype/hb-ot-layout-gsubgpos-private.hh @@ -194,7 +194,8 @@ static inline bool match_lookahead (APPLY_ARG_DEF, struct LookupRecord { - public: + static inline unsigned int get_size () { return sizeof (LookupRecord); } + inline bool sanitize (SANITIZE_ARG_DEF) { TRACE_SANITIZE (); return SANITIZE_SELF (); @@ -297,7 +298,7 @@ struct Rule inline bool apply (APPLY_ARG_DEF, ContextLookupContext &lookup_context) const { TRACE_APPLY (); - const LookupRecord *lookupRecord = &CONST_CAST (LookupRecord, input, sizeof (input[0]) * (inputCount ? inputCount - 1 : 0)); + const LookupRecord *lookupRecord = &CONST_CAST (LookupRecord, input, input[0].get_size () * (inputCount ? inputCount - 1 : 0)); return context_lookup (APPLY_ARG, inputCount, input, lookupCount, lookupRecord, @@ -309,8 +310,8 @@ struct Rule TRACE_SANITIZE (); if (!(SANITIZE (inputCount) && SANITIZE (lookupCount))) return false; return SANITIZE_MEM (input, - sizeof (input[0]) * inputCount + - sizeof (lookupRecordX[0]) * lookupCount); + input[0].get_size () * inputCount + + lookupRecordX[0].get_size () * lookupCount); } private: @@ -446,7 +447,7 @@ struct ContextFormat3 if (HB_LIKELY (index == NOT_COVERED)) return false; - const LookupRecord *lookupRecord = &CONST_CAST(LookupRecord, coverage, sizeof (coverage[0]) * glyphCount); + const LookupRecord *lookupRecord = &CONST_CAST(LookupRecord, coverage, coverage[0].get_size () * glyphCount); struct ContextLookupContext lookup_context = { {match_coverage, apply_func}, DECONST_CHARP(this) @@ -463,8 +464,8 @@ struct ContextFormat3 unsigned int count = glyphCount; for (unsigned int i = 0; i < count; i++) if (!SANITIZE_THIS (coverage[i])) return false; - LookupRecord *lookupRecord = &CAST(LookupRecord, coverage, sizeof (coverage[0]) * glyphCount); - return SANITIZE_MEM (lookupRecord, sizeof (lookupRecord[0]) * lookupCount); + LookupRecord *lookupRecord = &CAST(LookupRecord, coverage, coverage[0].get_size () * glyphCount); + return SANITIZE_MEM (lookupRecord, lookupRecord[0].get_size () * lookupCount); } private: |