diff --git a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java index 4dd720861e6a7e0c8ca5437321fd4c8267fc2739..d5de27504d3a6bebf7418081b67165f16dd4c3e9 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java @@ -322,19 +322,25 @@ public class ClassGen { if (inlineAttr == null || inlineAttr.notNeeded()) { return false; } - if (mth.getUseIn().isEmpty()) { - mth.add(AFlag.DONT_GENERATE); - return true; - } - List useInCompleted = mth.getUseIn().stream() - .filter(m -> m.getTopParentClass().getState().isProcessComplete()) - .collect(Collectors.toList()); - if (useInCompleted.isEmpty()) { - mth.add(AFlag.DONT_GENERATE); - return true; + try { + if (mth.getUseIn().isEmpty()) { + mth.add(AFlag.DONT_GENERATE); + return true; + } + List useInCompleted = mth.getUseIn().stream() + .filter(m -> m.getTopParentClass().getState().isProcessComplete()) + .collect(Collectors.toList()); + if (useInCompleted.isEmpty()) { + mth.add(AFlag.DONT_GENERATE); + return true; + } + mth.addDebugComment("Method not inlined, still used in: " + useInCompleted); + return false; + } catch (Exception e) { + // check failed => keep method + mth.addWarnComment("Failed to check method usage", e); + return false; } - mth.addDebugComment("Method not inlined, still used in: " + useInCompleted); - return false; } private boolean isMethodsPresents() {