diff --git a/asm-commons/src/test/java/org/objectweb/asm/commons/LocalVariablesSorterTest.java b/asm-commons/src/test/java/org/objectweb/asm/commons/LocalVariablesSorterTest.java index adf47b97da0301fe31779b8fa06747241b56d8bf..0d4d81fc7e137a4cf22a9f745a8499ab880b8163 100644 --- a/asm-commons/src/test/java/org/objectweb/asm/commons/LocalVariablesSorterTest.java +++ b/asm-commons/src/test/java/org/objectweb/asm/commons/LocalVariablesSorterTest.java @@ -30,12 +30,18 @@ package org.objectweb.asm.commons; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.objectweb.asm.test.Assertions.assertThat; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; + +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.MethodVisitor; +import org.objectweb.asm.Opcodes; import org.objectweb.asm.test.AsmTest; /** @@ -77,4 +83,26 @@ public class LocalVariablesSorterTest extends AsmTest { .succeedsOrThrows(UnsupportedClassVersionError.class) .when(classParameter.isMoreRecentThanCurrentJdk()); } + + @Test + public void testSortLocalVariablesAndInstantiate() throws FileNotFoundException, IOException { + ClassReader classReader = + new ClassReader(new FileInputStream("src/test/resources/Issue317586.class")); + ClassWriter classWriter = new ClassWriter(0); + ClassVisitor classVisitor = + new ClassVisitor(Opcodes.ASM6, classWriter) { + @Override + public MethodVisitor visitMethod( + final int access, + final String name, + final String desc, + final String signature, + final String[] exceptions) { + return new LocalVariablesSorter( + api, access, desc, super.visitMethod(access, name, desc, signature, exceptions)); + } + }; + classReader.accept(classVisitor, ClassReader.EXPAND_FRAMES); + loadAndInstantiate("app1.Main$BadLocal", classWriter.toByteArray()); + } } diff --git a/asm-commons/src/test/resources/Issue317586.class b/asm-commons/src/test/resources/Issue317586.class new file mode 100644 index 0000000000000000000000000000000000000000..32af483eec1d7d0a6aa866398ffb945a5f741cc5 Binary files /dev/null and b/asm-commons/src/test/resources/Issue317586.class differ