Fix two undefined-behavior issues
Fixes https://github.com/harfbuzz/harfbuzz/issues/761 Fixes https://github.com/harfbuzz/harfbuzz/issues/762
This commit is contained in:
parent
b87cbe2bec
commit
6d7c6e19dc
|
@ -173,7 +173,7 @@ struct hmtxvmtx
|
||||||
* be in the array, but that entry is
|
* be in the array, but that entry is
|
||||||
* required. The last entry applies to
|
* required. The last entry applies to
|
||||||
* all subsequent glyphs. */
|
* all subsequent glyphs. */
|
||||||
FWORD leadingBearingX[VAR]; /* Here the advance is assumed
|
/*FWORD leadingBearingX[VAR];*/ /* Here the advance is assumed
|
||||||
* to be the same as the advance
|
* to be the same as the advance
|
||||||
* for the last entry above. The
|
* for the last entry above. The
|
||||||
* number of entries in this array is
|
* number of entries in this array is
|
||||||
|
@ -187,7 +187,7 @@ struct hmtxvmtx
|
||||||
* font to vary the side bearing
|
* font to vary the side bearing
|
||||||
* values for each glyph. */
|
* values for each glyph. */
|
||||||
public:
|
public:
|
||||||
DEFINE_SIZE_ARRAY2 (0, longMetric, leadingBearingX);
|
DEFINE_SIZE_ARRAY (0, longMetric);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct hmtx : hmtxvmtx<hmtx> {
|
struct hmtx : hmtxvmtx<hmtx> {
|
||||||
|
|
|
@ -1212,7 +1212,7 @@ struct Rule
|
||||||
lookupCount.sanitize (c) &&
|
lookupCount.sanitize (c) &&
|
||||||
c->check_range (inputZ,
|
c->check_range (inputZ,
|
||||||
inputZ[0].static_size * inputCount +
|
inputZ[0].static_size * inputCount +
|
||||||
lookupRecordX[0].static_size * lookupCount));
|
LookupRecord::static_size * lookupCount));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -1222,10 +1222,10 @@ struct Rule
|
||||||
HBUINT16 lookupCount; /* Number of LookupRecords */
|
HBUINT16 lookupCount; /* Number of LookupRecords */
|
||||||
HBUINT16 inputZ[VAR]; /* Array of match inputs--start with
|
HBUINT16 inputZ[VAR]; /* Array of match inputs--start with
|
||||||
* second glyph */
|
* second glyph */
|
||||||
LookupRecord lookupRecordX[VAR]; /* Array of LookupRecords--in
|
/*LookupRecord lookupRecordX[VAR];*/ /* Array of LookupRecords--in
|
||||||
* design order */
|
* design order */
|
||||||
public:
|
public:
|
||||||
DEFINE_SIZE_ARRAY2 (4, inputZ, lookupRecordX);
|
DEFINE_SIZE_ARRAY (4, inputZ);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RuleSet
|
struct RuleSet
|
||||||
|
@ -1556,10 +1556,10 @@ struct ContextFormat3
|
||||||
OffsetTo<Coverage>
|
OffsetTo<Coverage>
|
||||||
coverageZ[VAR]; /* Array of offsets to Coverage
|
coverageZ[VAR]; /* Array of offsets to Coverage
|
||||||
* table in glyph sequence order */
|
* table in glyph sequence order */
|
||||||
LookupRecord lookupRecordX[VAR]; /* Array of LookupRecords--in
|
/*LookupRecord lookupRecordX[VAR];*/ /* Array of LookupRecords--in
|
||||||
* design order */
|
* design order */
|
||||||
public:
|
public:
|
||||||
DEFINE_SIZE_ARRAY2 (6, coverageZ, lookupRecordX);
|
DEFINE_SIZE_ARRAY (6, coverageZ);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Context
|
struct Context
|
||||||
|
|
Loading…
Reference in New Issue