mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix crash in CompositeTurboModuleManagerDelegate (#39155)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/39155 [Changelog]: [Android][Fixed] Fix crash in CompositeTurboModuleManagerDelegate CompositeTurboModuleManagerDelegate.cpp crashes as we pass in one or multiple ``` jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate ``` but don't retain a global reference to them. Fix use: ``` jni::make_global(delegate) ``` Differential Revision: D48670217 fbshipit-source-id: e805f28919918b2a867589dbb6e2a70d67dcd8c3
This commit is contained in:
committed by
Facebook GitHub Bot
parent
5cfa125b97
commit
e716459d66
+6
-5
@@ -29,7 +29,8 @@ CompositeTurboModuleManagerDelegate::getTurboModule(
|
||||
const std::string &moduleName,
|
||||
const std::shared_ptr<CallInvoker> &jsInvoker) {
|
||||
for (auto delegate : mDelegates_) {
|
||||
if (auto turboModule = delegate->getTurboModule(moduleName, jsInvoker)) {
|
||||
if (auto turboModule =
|
||||
delegate->cthis()->getTurboModule(moduleName, jsInvoker)) {
|
||||
return turboModule;
|
||||
}
|
||||
}
|
||||
@@ -41,7 +42,8 @@ CompositeTurboModuleManagerDelegate::getTurboModule(
|
||||
const std::string &moduleName,
|
||||
const JavaTurboModule::InitParams ¶ms) {
|
||||
for (auto delegate : mDelegates_) {
|
||||
if (auto turboModule = delegate->getTurboModule(moduleName, params)) {
|
||||
if (auto turboModule =
|
||||
delegate->cthis()->getTurboModule(moduleName, params)) {
|
||||
return turboModule;
|
||||
}
|
||||
}
|
||||
@@ -49,9 +51,8 @@ CompositeTurboModuleManagerDelegate::getTurboModule(
|
||||
}
|
||||
|
||||
void CompositeTurboModuleManagerDelegate::addTurboModuleManagerDelegate(
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject>
|
||||
turboModuleManagerDelegate) {
|
||||
mDelegates_.insert(turboModuleManagerDelegate->cthis());
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate) {
|
||||
mDelegates_.push_back(jni::make_global(delegate));
|
||||
}
|
||||
|
||||
} // namespace facebook::react
|
||||
|
||||
+5
-4
@@ -11,7 +11,7 @@
|
||||
#include <fbjni/fbjni.h>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <unordered_set>
|
||||
#include <vector>
|
||||
|
||||
namespace facebook::react {
|
||||
|
||||
@@ -30,6 +30,7 @@ class CompositeTurboModuleManagerDelegate
|
||||
std::shared_ptr<TurboModule> getTurboModule(
|
||||
const std::string &moduleName,
|
||||
const std::shared_ptr<CallInvoker> &jsInvoker) override;
|
||||
|
||||
std::shared_ptr<TurboModule> getTurboModule(
|
||||
const std::string &moduleName,
|
||||
const JavaTurboModule::InitParams ¶ms) override;
|
||||
@@ -37,11 +38,11 @@ class CompositeTurboModuleManagerDelegate
|
||||
private:
|
||||
friend HybridBase;
|
||||
using HybridBase::HybridBase;
|
||||
std::unordered_set<TurboModuleManagerDelegate *> mDelegates_;
|
||||
std::vector<jni::global_ref<TurboModuleManagerDelegate::javaobject>>
|
||||
mDelegates_;
|
||||
|
||||
void addTurboModuleManagerDelegate(
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject>
|
||||
turboModuleManagerDelegate);
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate);
|
||||
};
|
||||
|
||||
} // namespace facebook::react
|
||||
|
||||
Reference in New Issue
Block a user