fix: protect class deps from loading in different decompilation mode

This commit is contained in:
Skylot
2024-09-13 21:25:11 +01:00
parent 603863403f
commit 7bb5c0a859
2 changed files with 13 additions and 1 deletions
@@ -140,6 +140,17 @@ public class ProcessClass {
}
}
/**
* Generate code for class without processing its deps
*/
public @Nullable ICodeInfo forceGenerateCode(ClassNode cls) {
try {
return process(cls, true);
} catch (Throwable e) {
throw new JadxRuntimeException("Failed to generate code for class: " + cls.getFullName(), e);
}
}
public void initPasses(RootNode root) {
for (IDexTreeVisitor pass : passes) {
try {
@@ -327,7 +327,8 @@ public class ClassNode extends NotificationAttrNode
args.setDecompilationMode(mode);
ProcessClass process = new ProcessClass(Jadx.getPassesList(args));
process.initPasses(root);
return process.generateCode(this);
ICodeInfo code = process.forceGenerateCode(this);
return Utils.getOrElse(code, ICodeInfo.EMPTY);
} finally {
args.setDecompilationMode(baseMode);
unload();