mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Prevent Nullptr segfault in TurboModule init path
Summary: During the TurboModule init path, the TurboModuleManager asks the application to create the TurboModule object, given its class. If the application is unable to create the TurboModule object, what should we do? 0. **What we do now:** Continue executing TurboModule init path. 1. Silently return nil early. 2. Silently return nil early, and RCTLogError. If we Continue executing the TurobModule init path, we'll run into a segfault, because we'll call objc_setAssociatedObject(nil, ...). This diff prevents that segfault, by doing a silent return of nil. Changelog: [iOS][Fixed] - Prevent Nullptr segfault in TurboModule init path Reviewed By: fkgozali Differential Revision: D35942323 fbshipit-source-id: 7755800379c4bc733502314f3af3f401e9b04872
This commit is contained in:
committed by
Facebook GitHub Bot
parent
36c4e42d82
commit
7f3cc256b5
@@ -521,6 +521,19 @@ static Class getFallbackClassFromName(const char *name)
|
||||
std::lock_guard<std::mutex> delegateGuard(_turboModuleManagerDelegateMutex);
|
||||
module = [_delegate getModuleInstanceFromClass:moduleClass];
|
||||
}
|
||||
|
||||
/**
|
||||
* If the application is unable to create the TurboModule object from its class:
|
||||
* abort TurboModule creation, and early return nil.
|
||||
*/
|
||||
if (!module) {
|
||||
RCTLogWarn(
|
||||
@"TurboModuleManager delegate %@ returned nil TurboModule object for module with name=\"%s\" and class=%@",
|
||||
NSStringFromClass([_delegate class]),
|
||||
moduleName,
|
||||
NSStringFromClass(moduleClass));
|
||||
return nil;
|
||||
}
|
||||
} else {
|
||||
module = [moduleClass new];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user