mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-01-12 22:50:10 +08:00
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:
committed by
Facebook Github Bot
parent
010e3302b8
commit
608670ebed
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user