Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Procyon Decompile Save error #446

Open
ormaq opened this issue Jul 7, 2022 · 0 comments
Open

Procyon Decompile Save error #446

ormaq opened this issue Jul 7, 2022 · 0 comments

Comments

@ormaq
Copy link

ormaq commented Jul 7, 2022

Description

When viewing this file in the editor it works fine, however if you try to decompile any jar/zip with this file it will fail.

Only on Procyon.

File

Default IOUtils.class From org.apache.commons.io

IOUtils.zip

Fix

I believe in
the.bytecode.club.bytecodeviewer.decompilers.impl.ProcyonDecompiler.doSaveJarDecompiled

The issue lies in resolvedType not directly being checked for a null, along with type.resolve().

Error

Please send this error log to https://github.com/Konloch/bytecode-viewer/issues or Konloch at https://the.bytecode.club or konloch@gmail.com    
If you hold appropriate legal rights to the relevant class/jar/apk file please include that as well.
Bytecode Viewer Version: 2.11.2 [Fat Jar], OS: Windows 10, Java: 15.0.1

java.lang.NullPointerException: Cannot invoke "com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentNode.getNodeStatus()" because "node" is null
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis.changeNodeStatus(DefiniteAssignmentAnalysis.java:276)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis.access$400(DefiniteAssignmentAnalysis.java:40)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentVisitor.visitLambdaExpression(DefiniteAssignmentAnalysis.java:562)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentVisitor.visitLambdaExpression(DefiniteAssignmentAnalysis.java:445)
at com.strobel.decompiler.languages.java.ast.LambdaExpression.acceptVisitor(LambdaExpression.java:49)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentVisitor.visitChildren(DefiniteAssignmentAnalysis.java:465)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentVisitor.visitChildren(DefiniteAssignmentAnalysis.java:445)
at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitObjectCreationExpression(DepthFirstAstVisitor.java:344)
at com.strobel.decompiler.languages.java.ast.ObjectCreationExpression.acceptVisitor(ObjectCreationExpression.java:98)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentVisitor.visitVariableInitializer(DefiniteAssignmentAnalysis.java:498)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentVisitor.visitVariableInitializer(DefiniteAssignmentAnalysis.java:445)
at com.strobel.decompiler.languages.java.ast.VariableInitializer.acceptVisitor(VariableInitializer.java:80)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentVisitor.visitChildren(DefiniteAssignmentAnalysis.java:465)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentVisitor.visitChildren(DefiniteAssignmentAnalysis.java:445)
at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitVariableDeclaration(DepthFirstAstVisitor.java:199)
at com.strobel.decompiler.languages.java.ast.VariableDeclarationStatement.acceptVisitor(VariableDeclarationStatement.java:115)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentVisitor.visitTryCatchStatement(DefiniteAssignmentAnalysis.java:532)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis$DefiniteAssignmentVisitor.visitTryCatchStatement(DefiniteAssignmentAnalysis.java:445)
at com.strobel.decompiler.languages.java.ast.TryCatchStatement.acceptVisitor(TryCatchStatement.java:78)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis.changeNodeStatus(DefiniteAssignmentAnalysis.java:292)
at com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis.analyze(DefiniteAssignmentAnalysis.java:194)
at com.strobel.decompiler.languages.java.ast.transforms.TryWithResourcesTransform.visitTryCatchStatement(TryWithResourcesTransform.java:290)
at com.strobel.decompiler.languages.java.ast.transforms.TryWithResourcesTransform.visitTryCatchStatement(TryWithResourcesTransform.java:34)
at com.strobel.decompiler.languages.java.ast.TryCatchStatement.acceptVisitor(TryCatchStatement.java:78)
at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitChildren(DepthFirstAstVisitor.java:41)
at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitBlockStatement(DepthFirstAstVisitor.java:104)
at com.strobel.decompiler.languages.java.ast.BlockStatement.acceptVisitor(BlockStatement.java:72)
at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitChildren(DepthFirstAstVisitor.java:41)
at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitMethodDeclaration(DepthFirstAstVisitor.java:234)
at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.visitMethodDeclarationOverride(ContextTrackingVisitor.java:84)
at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.visitMethodDeclaration(ContextTrackingVisitor.java:76)
at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.visitMethodDeclaration(ContextTrackingVisitor.java:31)
at com.strobel.decompiler.languages.java.ast.MethodDeclaration.acceptVisitor(MethodDeclaration.java:94)
at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitChildren(DepthFirstAstVisitor.java:41)
at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitTypeDeclaration(DepthFirstAstVisitor.java:264)
at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.visitTypeDeclarationOverride(ContextTrackingVisitor.java:69)
at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.visitTypeDeclaration(ContextTrackingVisitor.java:60)
at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.visitTypeDeclaration(ContextTrackingVisitor.java:31)
at com.strobel.decompiler.languages.java.ast.TypeDeclaration.acceptVisitor(TypeDeclaration.java:98)
at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitChildren(DepthFirstAstVisitor.java:41)
at com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor.visitCompilationUnit(DepthFirstAstVisitor.java:274)
at com.strobel.decompiler.languages.java.ast.CompilationUnit.acceptVisitor(CompilationUnit.java:82)
at com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor.run(ContextTrackingVisitor.java:100)
at com.strobel.decompiler.languages.java.ast.transforms.TryWithResourcesTransform.run(TryWithResourcesTransform.java:169)
at com.strobel.decompiler.languages.java.ast.transforms.TransformationPipeline.runTransformationsUntil(TransformationPipeline.java:101)
at com.strobel.decompiler.languages.java.ast.AstBuilder.runTransformations(AstBuilder.java:122)
at com.strobel.decompiler.languages.java.JavaLanguage.runTransforms(JavaLanguage.java:97)
at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:72)
at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)
at the.bytecode.club.bytecodeviewer.decompilers.impl.ProcyonDecompiler.doSaveJarDecompiled(ProcyonDecompiler.java:187)
at the.bytecode.club.bytecodeviewer.decompilers.impl.ProcyonDecompiler.decompileToZip(ProcyonDecompiler.java:141)
at the.bytecode.club.bytecodeviewer.resources.ResourceDecompiling.decompileSaveAll(ResourceDecompiling.java:262)
at the.bytecode.club.bytecodeviewer.resources.ResourceDecompiling.lambda$decompileSaveAll$0(ResourceDecompiling.java:122)
at java.base/java.lang.Thread.run(Thread.java:832)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants