From 6435c91346aaebf2166daf726f7d1affbd2bb48b Mon Sep 17 00:00:00 2001 From: Alexey Ivanov Date: Tue, 22 Dec 2015 09:50:09 +0300 Subject: [PATCH] 8145551: Test failed with Crash for Improved font lookups Reviewed-by: prr, vadim --- .../share/native/libfontmanager/layout/Features.cpp | 7 ++++--- .../share/native/libfontmanager/layout/Lookups.cpp | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/jdk/src/java.desktop/share/native/libfontmanager/layout/Features.cpp b/jdk/src/java.desktop/share/native/libfontmanager/layout/Features.cpp index 0621888504d..730ad52a0bf 100644 --- a/jdk/src/java.desktop/share/native/libfontmanager/layout/Features.cpp +++ b/jdk/src/java.desktop/share/native/libfontmanager/layout/Features.cpp @@ -43,9 +43,10 @@ LEReferenceTo FeatureListTable::getFeatureTable(const LETableRefer LEReferenceToArrayOf featureRecordArrayRef(base, success, featureRecordArray, SWAPW(featureCount)); - if (featureIndex >= SWAPW(featureCount) || LE_FAILURE(success)) { - return LEReferenceTo(); - } + if (featureIndex >= SWAPW(featureCount) || LE_FAILURE(success)) { + success = LE_INDEX_OUT_OF_BOUNDS_ERROR; + return LEReferenceTo(); + } Offset featureTableOffset = featureRecordArray[featureIndex].featureTableOffset; diff --git a/jdk/src/java.desktop/share/native/libfontmanager/layout/Lookups.cpp b/jdk/src/java.desktop/share/native/libfontmanager/layout/Lookups.cpp index f914f2d7ee0..ed2f6673311 100644 --- a/jdk/src/java.desktop/share/native/libfontmanager/layout/Lookups.cpp +++ b/jdk/src/java.desktop/share/native/libfontmanager/layout/Lookups.cpp @@ -42,6 +42,7 @@ const LEReferenceTo LookupListTable::getLookupTable(const LEReferen LEReferenceToArrayOf lookupTableOffsetArrayRef(base, success, (const Offset*)&lookupTableOffsetArray, SWAPW(lookupCount)); if(LE_FAILURE(success) || lookupTableIndex>lookupTableOffsetArrayRef.getCount()) { + success = LE_INDEX_OUT_OF_BOUNDS_ERROR; return LEReferenceTo(); } else { return LEReferenceTo(base, success, SWAPW(lookupTableOffsetArrayRef.getObject(lookupTableIndex, success))); @@ -53,6 +54,7 @@ const LEReferenceTo LookupTable::getLookupSubtable(const LERefer LEReferenceToArrayOf subTableOffsetArrayRef(base, success, (const Offset*)&subTableOffsetArray, SWAPW(subTableCount)); if(LE_FAILURE(success) || subtableIndex>subTableOffsetArrayRef.getCount()) { + success = LE_INDEX_OUT_OF_BOUNDS_ERROR; return LEReferenceTo(); } else { return LEReferenceTo(base, success, SWAPW(subTableOffsetArrayRef.getObject(subtableIndex, success)));