diff -ru orig.icu/source/layout/LookupProcessor.cpp icu/source/layout/LookupProcessor.cpp
--- orig.icu/source/layout/LookupProcessor.cpp	2016-03-23 21:56:44.000000000 +0100
+++ icu/source/layout/LookupProcessor.cpp	2016-04-15 18:19:26.903927005 +0200
@@ -223,7 +223,9 @@
 
     if (requiredFeatureIndex != 0xFFFF) {
       requiredFeatureTable = featureListTable->getFeatureTable(featureListTable, requiredFeatureIndex, &requiredFeatureTag, success);
-      featureReferences += SWAPW(requiredFeatureTable->lookupCount);
+      if (requiredFeatureTable.isValid()) {
+        featureReferences += SWAPW(requiredFeatureTable->lookupCount);
+      }
     }
 
     lookupOrderArray = LE_NEW_ARRAY(le_uint16, featureReferences);
