diff options
author | prr <none@none> | 2013-04-26 15:06:51 -0700 |
---|---|---|
committer | prr <none@none> | 2013-04-26 15:06:51 -0700 |
commit | cda326cc113050a4bf184fe2fc0342ec4402acd9 (patch) | |
tree | 5d8632bdb1ea0f280a0803a45cbea41ea074c1e6 /src/share/native/sun/font/layout/MultipleSubstSubtables.cpp | |
parent | c34b83adc536d008df7b14af78a7e0e88c10fa49 (diff) |
8012617: ArrayIndexOutOfBoundsException with some fonts using LineBreakMeasurer
Reviewed-by: bae, srl
Diffstat (limited to 'src/share/native/sun/font/layout/MultipleSubstSubtables.cpp')
-rw-r--r-- | src/share/native/sun/font/layout/MultipleSubstSubtables.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp b/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp index 9d72ca8a1..af94e623b 100644 --- a/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp +++ b/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp @@ -61,6 +61,10 @@ le_uint32 MultipleSubstitutionSubtable::process(const LETableReference &base, Gl le_int32 coverageIndex = getGlyphCoverage(base, glyph, success); le_uint16 seqCount = SWAPW(sequenceCount); + if (LE_FAILURE(success)) { + return 0; + } + if (coverageIndex >= 0 && coverageIndex < seqCount) { Offset sequenceTableOffset = SWAPW(sequenceTableOffsetArray[coverageIndex]); const SequenceTable *sequenceTable = (const SequenceTable *) ((char *) this + sequenceTableOffset); |