From 0ee8786cd8025302284af6df3f63ea843dfb9737 Mon Sep 17 00:00:00 2001 From: Adam Ernst Date: Mon, 22 May 2017 15:40:36 -0700 Subject: [PATCH] Handle [native code] stack frames Reviewed By: ashwinb, javache Differential Revision: D5104078 fbshipit-source-id: edefc7cb7e1d401155372c917875ad8b14af94e9 --- .../react/devsupport/StackTraceHelper.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java index cb593db7b..6adf57855 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/StackTraceHelper.java @@ -174,17 +174,21 @@ public class StackTraceHelper { String[] stackTrace = stack.split("\n"); StackFrame[] result = new StackFrame[stackTrace.length]; for (int i = 0; i < stackTrace.length; ++i) { - Matcher matcher = STACK_FRAME_PATTERN.matcher(stackTrace[i]); - if (!matcher.find()) { - throw new IllegalArgumentException( + if (stackTrace[i].equals("[native code]")) { + result[i] = new StackFrameImpl(null, stackTrace[i], -1, -1); + } else { + Matcher matcher = STACK_FRAME_PATTERN.matcher(stackTrace[i]); + if (!matcher.find()) { + throw new IllegalArgumentException( "Unexpected stack frame format: " + stackTrace[i]); - } + } - result[i] = new StackFrameImpl( - matcher.group(2), - matcher.group(1) == null ? "(unknown)" : matcher.group(1), - Integer.parseInt(matcher.group(3)), - Integer.parseInt(matcher.group(4))); + result[i] = new StackFrameImpl( + matcher.group(2), + matcher.group(1) == null ? "(unknown)" : matcher.group(1), + Integer.parseInt(matcher.group(3)), + Integer.parseInt(matcher.group(4))); + } } return result; }