From d58ba8242b02b58ae2ac2c59fe3082d259c8c4db Mon Sep 17 00:00:00 2001 From: David Vacca Date: Sat, 31 Mar 2018 23:20:52 -0700 Subject: [PATCH] Avoid app crashing when a StackOverflowError is thrown when rendering deep RN view hierarcy Reviewed By: achen1 Differential Revision: D7400906 fbshipit-source-id: faaf701a88440f89390518f00e6a35f19e9203db --- .../com/facebook/react/views/view/ReactViewGroup.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java index 3641d120dab..1915b6eb48f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java @@ -21,6 +21,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import com.facebook.infer.annotation.Assertions; +import com.facebook.react.bridge.ReactContext; import com.facebook.react.common.annotations.VisibleForTesting; import com.facebook.react.modules.i18nmanager.I18nUtil; import com.facebook.react.touch.OnInterceptTouchEventListener; @@ -668,7 +669,12 @@ public class ReactViewGroup extends ViewGroup implements if (rootView != null) { rootView.handleException(e); } else { - throw e; + if (getContext() instanceof ReactContext) { + ReactContext reactContext = (ReactContext) getContext(); + reactContext.handleException(new IllegalViewOperationException("StackOverflowException", this, e)); + } else { + throw e; + } } } }