From 8ed406838129a9845eb56bf075f8d8dd3b824993 Mon Sep 17 00:00:00 2001 From: Joshua Gross Date: Thu, 8 Jul 2021 11:35:32 -0700 Subject: [PATCH] Don't pass on receiveEvent after CatalystInstance destruction Summary: It is possible for receiveEvent to be called concurrently with/after destruction of FabricUIManager. Drop events if we are able to detect that case. Changelog: [Internal] Reviewed By: sshic Differential Revision: D29596271 fbshipit-source-id: 1fa50d9c3cff0bf578316d905966e1bdfffe94d1 --- .../main/java/com/facebook/react/fabric/FabricUIManager.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index b78505b6c0c..d5d3921b0e8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -820,6 +820,11 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { FLog.d(TAG, "Emitted event without surfaceId: [%d] %s", reactTag, eventName); } + if (mDestroyed) { + FLog.e(TAG, "Attempted to receiveEvent after destruction"); + return; + } + EventEmitterWrapper eventEmitter = mMountingManager.getEventEmitter(surfaceId, reactTag); if (eventEmitter == null) {