summaryrefslogtreecommitdiff
path: root/pango/opentype/hb-ot-layout-gsubgpos-private.hh
diff options
context:
space:
mode:
Diffstat (limited to 'pango/opentype/hb-ot-layout-gsubgpos-private.hh')
-rw-r--r--pango/opentype/hb-ot-layout-gsubgpos-private.hh15
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: