]> source.dussan.org Git - javassist.git/commitdiff
fixed JASSIST-186
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Fri, 12 Apr 2013 09:21:45 +0000 (09:21 +0000)
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Fri, 12 Apr 2013 09:21:45 +0000 (09:21 +0000)
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@702 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

src/main/javassist/CtClass.java
src/main/javassist/bytecode/Bytecode.java
src/test/javassist/JvstTest4.java

index 286977150db90097e96767820394b687fbf1ab45..f34a565a0a54f1389404f8a4454275e517150939 100644 (file)
@@ -69,7 +69,7 @@ public abstract class CtClass {
     /**
      * The version number of this release.
      */
-    public static final String version = "3.17.1-GA";
+    public static final String version = "3.18.0-GA";
 
     /**
      * Prints the version number and the copyright notice.
@@ -80,7 +80,7 @@ public abstract class CtClass {
      */
     public static void main(String[] args) {
         System.out.println("Javassist version " + CtClass.version);
-        System.out.println("Copyright (C) 1999-2012 Shigeru Chiba."
+        System.out.println("Copyright (C) 1999-2013 Shigeru Chiba."
                            + " All Rights Reserved.");
     }
 
index bea7b6fa1747356f9c4a45a34a3bba34a8361aba..fb4d3ec9fe3661dc98671af5f1e8fc9a8d615955 100644 (file)
@@ -1083,7 +1083,7 @@ public class Bytecode extends ByteVector implements Cloneable, Opcode {
     public void addInvokevirtual(int clazz, String name, String desc) {
         add(INVOKEVIRTUAL);
         addIndex(constPool.addMethodrefInfo(clazz, name, desc));
-        growStack(Descriptor.dataSize(desc));   // assume CosntPool#REF_invokeStatic
+        growStack(Descriptor.dataSize(desc) - 1);
     }
 
     /**
@@ -1170,7 +1170,7 @@ public class Bytecode extends ByteVector implements Cloneable, Opcode {
         add(INVOKEDYNAMIC);
         addIndex(dyn);
         add(0, 0);
-        growStack(Descriptor.dataSize(desc) - 1);
+        growStack(Descriptor.dataSize(desc));   // assume ConstPool#REF_invokeStatic
     }
 
     /**
index 7cf6178a13833d6e94fc36d2ab1542fd7dbfa44d..768b740045dd3df98823f3ed881f45e2e0817cfb 100644 (file)
@@ -817,4 +817,15 @@ public class JvstTest4 extends JvstTestRoot {
         assertEquals(10, invoke(obj, "test33"));
         assertEquals(100, invoke(obj, "test44"));
     }
+
+    public void testJIRA186() throws Exception {
+       CtClass cc = sloader.get("test4.JIRA186");
+       cc.getDeclaredMethod("test").insertBefore("{" +
+                         "  java.util.List l = new java.util.ArrayList();" +
+                         "  l.add(this.toString());" +
+                         "}");
+        cc.writeFile();
+        Object obj = make(cc.getName());
+        assertEquals(1, invoke(obj, "test"));
+    }
 }