Skip to content
This repository was archived by the owner on May 12, 2024. It is now read-only.

Commit 8f31a46

Browse files
committed
Fixed class version comparisons
1 parent 803870e commit 8f31a46

3 files changed

Lines changed: 6 additions & 6 deletions

File tree

impl-classtransform/src/main/java/net/raphimc/javadowngrader/impl/classtransform/JavaDowngraderTransformer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import net.raphimc.javadowngrader.RuntimeDepCollector;
2525
import org.objectweb.asm.tree.ClassNode;
2626

27-
import java.nio.ByteBuffer;
2827
import java.util.function.Predicate;
2928

3029
public class JavaDowngraderTransformer implements IBytecodeTransformer {
@@ -76,15 +75,16 @@ public JavaDowngraderTransformer(final TransformerManager transformerManager, fi
7675

7776
@Override
7877
public byte[] transform(String className, byte[] bytecode, boolean calculateStackMapFrames) {
79-
if (ByteBuffer.wrap(bytecode, 4, 4).getInt() <= this.targetVersion) {
78+
final int majorVersion = (bytecode[6] & 0xFF) << 8 | (bytecode[7] & 0xFF);
79+
if (majorVersion <= this.targetVersion) {
8080
return null;
8181
}
8282
if (!this.classFilter.test(className)) {
8383
return null;
8484
}
8585

8686
final ClassNode classNode = ASMUtils.fromBytes(bytecode);
87-
JavaDowngrader.downgrade(classNode, this.targetVersion, depCollector);
87+
JavaDowngrader.downgrade(classNode, this.targetVersion, this.depCollector);
8888

8989
if (calculateStackMapFrames) {
9090
return ASMUtils.toBytes(classNode, this.transformerManager.getClassTree(), this.transformerManager.getClassProvider());

src/main/java/net/raphimc/javadowngrader/JavaDowngrader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public static void downgrade(final ClassNode classNode, final int targetVersion)
7979
*/
8080
public static void downgrade(final ClassNode classNode, final int targetVersion, final RuntimeDepCollector depCollector) {
8181
for (DowngradingTransformer transformer : TRANSFORMER) {
82-
if (transformer.getTargetVersion() >= targetVersion && classNode.version > transformer.getTargetVersion()) {
82+
if (transformer.getTargetVersion() >= targetVersion && (classNode.version & 0xFF) > transformer.getTargetVersion()) {
8383
transformer.transform(classNode, depCollector);
8484
}
8585
}

src/main/java/net/raphimc/javadowngrader/transformer/DowngradingTransformer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,10 @@ public void transform(final ClassNode classNode) {
8484
}
8585

8686
public void transform(final ClassNode classNode, final RuntimeDepCollector depCollector) {
87-
if (classNode.version > this.sourceVersion) {
87+
if ((classNode.version & 0xFF) > this.sourceVersion) {
8888
throw new IllegalArgumentException("Input class version is higher than supported");
8989
}
90-
if (classNode.version <= this.targetVersion) {
90+
if ((classNode.version & 0xFF) <= this.targetVersion) {
9191
return;
9292
}
9393

0 commit comments

Comments
 (0)