- le_uint16 lookupCount = featureTable? SWAPW(featureTable->lookupCount) : 0;
- le_int32 store = order;
-
- for (le_uint16 lookup = 0; lookup < lookupCount; lookup += 1) {
- le_uint16 lookupListIndex = SWAPW(featureTable->lookupListIndexArray[lookup]);
- if (lookupListIndex >= lookupSelectCount) {
- continue;
- }
-
- lookupSelectArray[lookupListIndex] |= featureMask;
- lookupOrderArray[store++] = lookupListIndex;
+ le_uint16 lookupCount = featureTable.isValid()? SWAPW(featureTable->lookupCount) : 0;
+ le_uint32 store = (le_uint32)order;
+
+ LEReferenceToArrayOf<le_uint16> lookupListIndexArray(featureTable, success, featureTable->lookupListIndexArray, lookupCount);
+
+ for (le_uint16 lookup = 0; LE_SUCCESS(success) && lookup < lookupCount; lookup += 1) {
+ le_uint16 lookupListIndex = SWAPW(lookupListIndexArray.getObject(lookup,success));
+ if (lookupListIndex >= lookupSelectCount) {
+ continue;
+ }
+ if (store >= lookupOrderCount) {
+ continue;
+ }
+
+ lookupSelectArray[lookupListIndex] |= featureMask;
+ lookupOrderArray[store++] = lookupListIndex;