From fc58022d561f7bdbf139790c950d288da15d180f Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 13 Jul 2019 13:17:22 +0300 Subject: [PATCH] misc: show shorter exception stacktrace in code --- .../src/main/java/jadx/core/utils/Utils.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/jadx-core/src/main/java/jadx/core/utils/Utils.java b/jadx-core/src/main/java/jadx/core/utils/Utils.java index 796be6a6f..9d6f8264b 100644 --- a/jadx-core/src/main/java/jadx/core/utils/Utils.java +++ b/jadx-core/src/main/java/jadx/core/utils/Utils.java @@ -17,10 +17,12 @@ import org.jetbrains.annotations.Nullable; import jadx.api.JadxDecompiler; import jadx.core.codegen.CodeWriter; +import jadx.core.dex.visitors.DepthTraversal; public class Utils { - public static final String JADX_API_PACKAGE = JadxDecompiler.class.getPackage().getName(); + private static final String JADX_API_PACKAGE = JadxDecompiler.class.getPackage().getName(); + private static final String STACKTRACE_STOP_CLS_NAME = DepthTraversal.class.getName(); private Utils() { } @@ -140,20 +142,16 @@ public class Utils { private static void filter(Throwable th) { StackTraceElement[] stackTrace = th.getStackTrace(); - int cutIndex = -1; int length = stackTrace.length; for (int i = 0; i < length; i++) { StackTraceElement stackTraceElement = stackTrace[i]; - if (stackTraceElement.getClassName().startsWith(JADX_API_PACKAGE)) { - cutIndex = i; - } else if (cutIndex > 0) { - cutIndex = i; - break; + String clsName = stackTraceElement.getClassName(); + if (clsName.equals(STACKTRACE_STOP_CLS_NAME) + || clsName.startsWith(JADX_API_PACKAGE)) { + th.setStackTrace(Arrays.copyOfRange(stackTrace, 0, i)); + return; } } - if (cutIndex > 0 && cutIndex < length) { - th.setStackTrace(Arrays.copyOfRange(stackTrace, 0, cutIndex)); - } } public static List collectionMap(Collection list, Function mapFunc) {