diff --git a/src/main/java/net/runelite/deob/deobfuscators/ConstantParameter.java b/src/main/java/net/runelite/deob/deobfuscators/ConstantParameter.java index b3e90a1797..3d46e249b9 100644 --- a/src/main/java/net/runelite/deob/deobfuscators/ConstantParameter.java +++ b/src/main/java/net/runelite/deob/deobfuscators/ConstantParameter.java @@ -490,6 +490,9 @@ public class ConstantParameter implements Deobfuscator // move things that jump here to instead jump to 'to' for (Instruction i : instructions.getInstructions()) i.replace(ins, to); + + for (net.runelite.asm.attributes.code.Exception e : instructions.getCode().getExceptions().getExceptions()) + e.replace(ins, to); instructions.remove(ins); diff --git a/src/test/java/net/runelite/deob/deobfuscators/ConstantParameterTest.java b/src/test/java/net/runelite/deob/deobfuscators/ConstantParameterTest.java new file mode 100644 index 0000000000..6b569cf6bf --- /dev/null +++ b/src/test/java/net/runelite/deob/deobfuscators/ConstantParameterTest.java @@ -0,0 +1,40 @@ +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 ConstantParameterTest +{ + 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() + { + ConstantParameter cp = new ConstantParameter(); + cp.run(group); + } +}