diff --git a/pom.xml b/pom.xml
index 0c36eaff..e1c2c6c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,12 +43,12 @@
2.5.2
1.29
1.1.4c
- f681c89
- v24
+ 8e89a2e
+ v26
2.7.2
0.3.4
0.2.2
- 2.1.0
+ 2.1.1
1.0.3
4.9.2
21.2.0
diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/jdgui/JDGUIClassFileUtil.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/jdgui/JDGUIClassFileUtil.java
index c67b80d0..c2474d7b 100644
--- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/jdgui/JDGUIClassFileUtil.java
+++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/jdgui/JDGUIClassFileUtil.java
@@ -5,7 +5,6 @@ import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
-import java.util.Objects;
import org.jd.core.v1.model.classfile.constant.Constant;
import org.jd.core.v1.model.classfile.constant.ConstantClass;
import org.jd.core.v1.model.classfile.constant.ConstantUtf8;
@@ -29,8 +28,9 @@ public class JDGUIClassFileUtil
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis)) {
int magic = dis.readInt();
- if (magic != ClassFileReader.JAVA_MAGIC_NUMBER)
+ if (magic != ClassFileReader.JAVA_MAGIC_NUMBER) {
throw new ClassFileFormatException("Invalid Java .class file");
+ }
/* int minor_version = */
dis.readUnsignedShort();
@@ -43,16 +43,18 @@ public class JDGUIClassFileUtil
dis.readUnsignedShort();
int this_class = dis.readUnsignedShort();
- if (this_class > Objects.requireNonNull(constants).length) {
+ if (this_class > constants.length) {
throw new ClassFileFormatException("Unknown Java structure");
}
Constant c = constants[this_class];
- if ((c == null) || (c.getTag() != Constant.CONSTANT_Class))
+ if ((c == null) || (c.getTag() != Constant.CONSTANT_Class)) {
throw new ClassFileFormatException("Invalid constant pool");
+ }
c = constants[((ConstantClass) c).getNameIndex()];
- if ((c == null) || (c.getTag() != Constant.CONSTANT_Utf8))
+ if ((c == null) || (c.getTag() != Constant.CONSTANT_Utf8)) {
throw new ClassFileFormatException("Invalid constant pool");
+ }
String internalClassName = ((ConstantUtf8) c).getValue();
String pathSuffix = internalClassName.replace(
@@ -61,8 +63,9 @@ public class JDGUIClassFileUtil
int index = pathToClass.indexOf(pathSuffix);
- if (index < 0)
+ if (index < 0) {
throw new ClassFileFormatException("Invalid internal class name");
+ }
directoryPath = pathToClass.substring(0, index);
} catch (IOException e) {
@@ -87,9 +90,6 @@ public class JDGUIClassFileUtil
private static Constant[] DeserializeConstants(DataInputStream dis)
throws IOException {
int count = dis.readUnsignedShort();
- if (count == 0)
- return null;
-
Constant[] constants = new Constant[count];
for (int i = 1; i < count; i++) {
@@ -112,12 +112,15 @@ public class JDGUIClassFileUtil
case Constant.CONSTANT_FieldRef:
case Constant.CONSTANT_MethodRef:
case Constant.CONSTANT_InterfaceMethodRef:
+ case Constant.CONSTANT_InvokeDynamic:
case Constant.CONSTANT_NameAndType:
case Constant.CONSTANT_Integer:
case Constant.CONSTANT_Float:
dis.read();
+ case Constant.CONSTANT_MethodHandle:
dis.read();
case Constant.CONSTANT_String:
+ case Constant.CONSTANT_MethodType:
dis.read();
dis.read();
break;