*/
public void write(DataOutputStream out) throws IOException
{
+ if (numOfItems < 0 || Short.MAX_VALUE < numOfItems)
+ throw new IOException("too many constant pool items " + numOfItems);
+
out.writeShort(numOfItems);
LongVector v = items;
int size = numOfItems;
import javassist.expr.Handler;
import javassist.expr.MethodCall;
import javassist.expr.NewExpr;
+import junit.framework.Assert;
@SuppressWarnings({"rawtypes","unchecked","unused"})
public class JvstTest5 extends JvstTestRoot {
Object obj = make(cc.getName());
assertEquals(1, invoke(obj, "run"));
}
+
+ public void testTooManyConstPoolItems() throws Exception {
+ CtClass cc = sloader.makeClass("TooManyConstPoolItems");
+ ClassFile cf = cc.getClassFile();
+ ConstPool cPool = cf.getConstPool();
+ for (int i = 0; i <= 65527; i++)
+ cPool.addIntegerInfo(i);
+ try {
+ cc.writeFile();
+ fail("too many items were accepted");
+ }
+ catch (CannotCompileException e) {}
+ }
}