diff --git a/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeStatic.java b/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeStatic.java index 9b209725e1..141a461db9 100644 --- a/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeStatic.java +++ b/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeStatic.java @@ -150,7 +150,8 @@ public class InvokeStatic extends Instruction implements InvokeInstruction return null; // not our class net.runelite.asm.Method other = otherClass.findMethodDeepStatic(method.getNameAndType()); - assert other != null; + if (other == null) + return null; // when regenerating the pool after renaming the method this can be null. return other; } diff --git a/src/main/java/net/runelite/asm/objectwebasm/NonloadingClassWriter.java b/src/main/java/net/runelite/asm/objectwebasm/NonloadingClassWriter.java index 496e0e1fcd..ec9485b8fe 100644 --- a/src/main/java/net/runelite/asm/objectwebasm/NonloadingClassWriter.java +++ b/src/main/java/net/runelite/asm/objectwebasm/NonloadingClassWriter.java @@ -34,7 +34,7 @@ class NonloadingClassWriter extends ClassWriter if (c == c2) return c.getName(); - throw new RuntimeException("No common base"); + return "java/lang/Object"; } ClassFile found; diff --git a/src/main/java/net/runelite/deob/deobfuscators/RenameUnique.java b/src/main/java/net/runelite/deob/deobfuscators/RenameUnique.java index ba8ff1640c..d934f16130 100644 --- a/src/main/java/net/runelite/deob/deobfuscators/RenameUnique.java +++ b/src/main/java/net/runelite/deob/deobfuscators/RenameUnique.java @@ -1,10 +1,6 @@ package net.runelite.deob.deobfuscators; -import java.io.File; -import java.io.IOException; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import net.runelite.asm.ClassFile; import net.runelite.asm.ClassGroup; diff --git a/src/main/java/net/runelite/deob/util/JarUtil.java b/src/main/java/net/runelite/deob/util/JarUtil.java index b918c7948c..cf46e56c45 100644 --- a/src/main/java/net/runelite/deob/util/JarUtil.java +++ b/src/main/java/net/runelite/deob/util/JarUtil.java @@ -16,7 +16,6 @@ import java.util.jar.Manifest; import net.runelite.asm.ClassFile; import net.runelite.asm.ClassGroup; import net.runelite.asm.objectwebasm.AsmUtils; -import org.objectweb.asm.ClassReader; public class JarUtil { diff --git a/src/test/java/net/runelite/deob/deobfuscators/RenameUniqueTest.java b/src/test/java/net/runelite/deob/deobfuscators/RenameUniqueTest.java new file mode 100644 index 0000000000..bd7600f0ca --- /dev/null +++ b/src/test/java/net/runelite/deob/deobfuscators/RenameUniqueTest.java @@ -0,0 +1,41 @@ +package net.runelite.deob.deobfuscators; + +import java.io.File; +import java.io.IOException; +import net.runelite.asm.ClassGroup; +import net.runelite.deob.util.JarUtil; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +public class RenameUniqueTest +{ + private static final File GAMEPACK = new File(RenameUniqueTest.class.getResource("/gamepack_v16.jar").getFile()); + + @Rule + public TemporaryFolder folder = new TemporaryFolder(); + + private ClassGroup group; + + @Before + public void before() throws IOException + { + group = JarUtil.loadJar(GAMEPACK); + } + + @After + public void after() throws IOException + { + JarUtil.saveJar(group, folder.newFile()); + } + + @Test + public void testRun() + { + RenameUnique renameUnique = new RenameUnique(); + renameUnique.run(group); + } + +}