From 96fd107d61da9b195928a2a6cfdc39fc095767b4 Mon Sep 17 00:00:00 2001 From: Alex Danoff Date: Fri, 9 Jun 2023 08:42:27 -0700 Subject: [PATCH] W3CPointerEvents: fix NPE due to null targetView (#37785) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/37785 Changelog: [Android] [Fixed] - W3CPointerEvents: fix NPE due to null targetView For reasons not entirely understood, we sometimes end up with a null `targetView` in this code path during the dispatch of an `ACTION_CANCEL`. This results in an NPE during the call to `getChildOffsetRelativeToRoot`. This change adds a null check before the call to avoid the crash. Reviewed By: cortinico Differential Revision: D46562263 fbshipit-source-id: fe60fe08929ed29a570a860d49915b6f5ae4a542 --- .../java/com/facebook/react/uimanager/JSPointerDispatcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java index 0f1a206ba0bfaa..eb970dfbfb443f 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java @@ -615,7 +615,7 @@ private void dispatchCancelEventForTarget( int activePointerId = eventState.getActivePointerId(); List activeHitPath = eventState.getHitPathByPointerId().get(activePointerId); - if (!activeHitPath.isEmpty()) { + if (!activeHitPath.isEmpty() && targetView != null) { boolean listeningForCancel = isAnyoneListeningForBubblingEvent(activeHitPath, EVENT.CANCEL, EVENT.CANCEL_CAPTURE); if (listeningForCancel) {