diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java index 47b1a98e4..cb48bec2e 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java @@ -152,8 +152,12 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { } instructions = null; blocks = null; + enterBlock = null; exitBlocks = null; exceptionHandlers.clear(); + sVars.clear(); + region = null; + loops.clear(); } private boolean parseSignature() { diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/DependencyCollector.java b/jadx-core/src/main/java/jadx/core/dex/visitors/DependencyCollector.java index 558ef3fb4..4d8ffc9c8 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/DependencyCollector.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/DependencyCollector.java @@ -30,6 +30,7 @@ public class DependencyCollector extends AbstractVisitor { processClass(inner, dex, depList); } depList.remove(cls); + removeInnerClassesFromDeps(cls, depList); return false; } @@ -122,4 +123,11 @@ public class DependencyCollector extends AbstractVisitor { depList.add(clsNode.getTopParentClass()); } } + + private void removeInnerClassesFromDeps(ClassNode cls, Set depList) { + cls.getInnerClasses().forEach(inner -> { + depList.remove(inner); + removeInnerClassesFromDeps(inner, depList); + }); + } }