From 3f0caedd4d3a336b995f4828f3ef996ee8e3911c Mon Sep 17 00:00:00 2001 From: Matt Blagden Date: Tue, 6 Jun 2023 08:25:55 -0700 Subject: [PATCH] Handle null connections (#37626) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/37626 `inspector_->connect` can return `null` when the connection fails. Check for `null` and raise an exception (preventing a later crash when the `null` connection is used). Changelog: [Internal] Reviewed By: voideanvalue Differential Revision: D46126080 fbshipit-source-id: 42e08687b4d425dd87642cf6b61f675e77c738ee --- .../src/main/java/com/facebook/react/bridge/Inspector.java | 6 +++++- .../ReactAndroid/src/main/jni/react/jni/JInspector.cpp | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.java index c8b340f7691..3043c74eac2 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.java @@ -34,7 +34,11 @@ public class Inspector { public static LocalConnection connect(int pageId, RemoteConnection remote) { try { - return instance().connectNative(pageId, remote); + final LocalConnection local = instance().connectNative(pageId, remote); + if (local == null) { + throw new IllegalStateException("Can't open failed connection"); + } + return local; } catch (UnsatisfiedLinkError e) { FLog.e(ReactConstants.TAG, "Inspector doesn't work in open source yet", e); throw new RuntimeException(e); diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.cpp index a96bd26ab1b..427b3bb8f7c 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.cpp @@ -95,7 +95,9 @@ jni::local_ref JInspector::connect( jni::alias_ref remote) { auto localConnection = inspector_->connect( pageId, std::make_unique(std::move(remote))); - return JLocalConnection::newObjectCxxArgs(std::move(localConnection)); + return localConnection + ? JLocalConnection::newObjectCxxArgs(std::move(localConnection)) + : nullptr; } void JInspector::registerNatives() {