X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/4388f060552cc537e71e957d32f35e9d75a61233..b801cf366c7671a99bdcef84d1e9c0ec64b36723:/icuSources/layout/ExtensionSubtables.cpp diff --git a/icuSources/layout/ExtensionSubtables.cpp b/icuSources/layout/ExtensionSubtables.cpp index 813caeb3..8ac03a2b 100644 --- a/icuSources/layout/ExtensionSubtables.cpp +++ b/icuSources/layout/ExtensionSubtables.cpp @@ -1,7 +1,7 @@ /* * %W% %E% * - * (C) Copyright IBM Corp. 2008-2011 - All Rights Reserved + * (C) Copyright IBM Corp. 2008-2013 - All Rights Reserved * */ @@ -26,6 +26,8 @@ static inline le_uint32 READ_LONG(le_uint32 code) { le_uint32 ExtensionSubtable::process(const LookupProcessor *lookupProcessor, le_uint16 lookupType, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const { + const LEReferenceTo thisRef(lookupProcessor->getReference(), success); // create a reference to this + if (LE_FAILURE(success)) { return 0; } @@ -34,9 +36,11 @@ le_uint32 ExtensionSubtable::process(const LookupProcessor *lookupProcessor, le_ if (elt != lookupType) { le_uint32 extOffset = READ_LONG(extensionOffset); - LookupSubtable *subtable = (LookupSubtable *) ((char *) this + extOffset); + LEReferenceTo subtable(thisRef, success, extOffset); - return lookupProcessor->applySubtable(subtable, elt, glyphIterator, fontInstance, success); + if(LE_SUCCESS(success)) { + return lookupProcessor->applySubtable(subtable, elt, glyphIterator, fontInstance, success); + } } return 0;