iOS: guard against bad RCTModuleData instance

Summary: In some rare race condition (usually involving network request handling vs bridge shutting down), there may be bad access to an RCTModuleData that may have been de-allocated. To prevent crashes, let's guard the access and return nil appropriately.

Reviewed By: yungsters

Differential Revision: D13548755

fbshipit-source-id: b97326524cd9ca70a13d15098a1eaadfc7f1a6a8
This commit is contained in:
Kevin Gozali
2018-12-26 11:08:21 -08:00
committed by Facebook Github Bot
parent 010e3302b8
commit 608670ebed

View File

@@ -458,6 +458,12 @@ struct RCTInstanceCallback : public InstanceCallback {
RCTModuleData *moduleData = _moduleDataByName[moduleName];
if (moduleData) {
if (![moduleData isKindOfClass:[RCTModuleData class]]) {
// There is rare race condition where the data stored in the dictionary
// may have been deallocated, which means the module instance is no longer
// usable.
return nil;
}
return moduleData.instance;
}