- stateTableHeader = (const MorphStateTableHeader2 *) morphSubtableHeader;
- nClasses = SWAPL(stateTableHeader->stHeader.nClasses);
- classTableOffset = SWAPL(stateTableHeader->stHeader.classTableOffset);
- stateArrayOffset = SWAPL(stateTableHeader->stHeader.stateArrayOffset);
- entryTableOffset = SWAPL(stateTableHeader->stHeader.entryTableOffset);
-
- classTable = (LookupTable *) ((char *) &stateTableHeader->stHeader + classTableOffset);
- format = SWAPW(classTable->format);
-
- stateArray = (const EntryTableIndex2 *) ((char *) &stateTableHeader->stHeader + stateArrayOffset);
+ if (LE_FAILURE(success)) {
+ return;
+ }
+ nClasses = SWAPL(stHeader->nClasses);
+ classTableOffset = SWAPL(stHeader->classTableOffset);
+ stateArrayOffset = SWAPL(stHeader->stateArrayOffset);
+ entryTableOffset = SWAPL(stHeader->entryTableOffset);
+
+ classTable = LEReferenceTo<LookupTableBase>(stHeader, success, classTableOffset);
+ format = SWAPW(classTable->format);
+
+ stateArray = LEReferenceToArrayOf<EntryTableIndex2>(stHeader, success, stateArrayOffset, LE_UNBOUNDED_ARRAY);