Skip to content

Commit 4c905c8

Browse files
committed
Fix ClassNodeDecompiler not decompiling inner classes
1 parent 5d5182d commit 4c905c8

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

src/main/java/the/bytecode/club/jda/FileContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public FileContainer(File f) {
2828

2929
public ClassNode getClassNode(String name) {
3030
if (!classes.containsKey(name)) {
31-
byte[] bytes = files.get(name + ".class");
31+
byte[] bytes = files.get(name);
3232
if (bytes != null) {
3333
ClassReader reader = new ClassReader(bytes);
3434
ClassNode classNode = new ClassNode();

src/main/java/the/bytecode/club/jda/JDA.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,9 @@ public static ClassNode getCurrentlyOpenedClassNode() {
164164
*/
165165
public static ClassNode getClassNode(String containerName, String name) {
166166
for (FileContainer container : files) {
167-
if (container.name.equals(containerName) && container.getData().containsKey(name + ".class")) {
168-
return container.getClassNode(name);
167+
String classFileName = name + ".class";
168+
if (container.name.equals(containerName) && container.getData().containsKey(classFileName)) {
169+
return container.getClassNode(classFileName);
169170
}
170171
}
171172
return null;
@@ -233,7 +234,7 @@ public static ArrayList<ClassNode> loadAllClasses() {
233234
for (String s : container.files.keySet()) {
234235
if (!s.endsWith(".class"))
235236
continue;
236-
ClassNode loaded = container.getClassNode(s.substring(0, s.length() - 6));
237+
ClassNode loaded = container.getClassNode(s);
237238
if (loaded != null) {
238239
a.add(loaded);
239240
}

src/main/java/the/bytecode/club/jda/decompilers/bytecode/ClassNodeDecompiler.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public String decompileClassNode(ClassNode cn, byte[] b) {
4141
containerName = container.name;
4242
}
4343
}
44+
if (containerName == null)
45+
System.out.println("Warning: Unable to locate container for class " + cn.name + "!");
4446

4547
return decompile(new PrefixedStringBuilder(), new ArrayList<>(), containerName, cn).toString();
4648
}

0 commit comments

Comments
 (0)