You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ru...@locus.apache.org on 2000/01/18 03:54:58 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/jasper/compiler ClassName.java
rubys 00/01/17 18:54:58
Modified: src/share/org/apache/jasper/compiler ClassName.java
Log:
Jasper can't deal with Constant pool entries >= 32K bytes in length
Submitted by: Juan A. Hern�ndez <ja...@dss.es>
Revision Changes Path
1.2 +20 -20 jakarta-tomcat/src/share/org/apache/jasper/compiler/ClassName.java
Index: ClassName.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/ClassName.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ClassName.java 1999/10/09 00:20:35 1.1
+++ ClassName.java 2000/01/18 02:54:57 1.2
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/ClassName.java,v 1.1 1999/10/09 00:20:35 duncan Exp $
- * $Revision: 1.1 $
- * $Date: 1999/10/09 00:20:35 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/ClassName.java,v 1.2 2000/01/18 02:54:57 rubys Exp $
+ * $Revision: 1.2 $
+ * $Date: 2000/01/18 02:54:57 $
*
* ====================================================================
*
@@ -82,9 +82,9 @@
static String processClassData(InputStream in) throws JasperException, IOException {
DataInputStream din = new DataInputStream(in);
din.readInt(); // magic
- din.readShort(); // majorVersion
- din.readShort(); // minorVersion
- int count = din.readShort(); // #constant pool entries
+ din.readUnsignedShort(); // majorVersion
+ din.readUnsignedShort(); // minorVersion
+ int count = din.readUnsignedShort(); // #constant pool entries
ConstantPool[] constantPool = new ConstantPool[count];
constantPool[0] = new ConstantPool();
for (int i = 1; i < constantPool.length; i++) {
@@ -105,8 +105,8 @@
if (constantPool[i].index2 > 0)
constantPool[i].arg2 = constantPool[constantPool[i].index2];
}
- short accessFlags = din.readShort();
- ConstantPool thisClass = constantPool[din.readShort()];
+ int accessFlags = din.readUnsignedShort();
+ ConstantPool thisClass = constantPool[din.readUnsignedShort()];
din.close();
return printClassName(thisClass.arg1.strValue);
}
@@ -210,7 +210,7 @@
String name; // String for the type
ConstantPool arg1; // index to first argument
ConstantPool arg2; // index to second argument
- short index1, index2;
+ int index1, index2;
String strValue; // ASCIZ String value
int intValue;
long longValue;
@@ -251,32 +251,32 @@
switch (type) {
case CLASS:
name = "Class";
- index1 = din.readShort();
+ index1 = din.readUnsignedShort();
index2 = -1;
break;
case FIELDREF:
name = "Field Reference";
- index1 = din.readShort();
- index2 = din.readShort();
+ index1 = din.readUnsignedShort();
+ index2 = din.readUnsignedShort();
break;
case METHODREF:
name = "Method Reference";
- index1 = din.readShort();
- index2 = din.readShort();
+ index1 = din.readUnsignedShort();
+ index2 = din.readUnsignedShort();
break;
case INTERFACE:
name = "Interface Method Reference";
- index1 = din.readShort();
- index2 = din.readShort();
+ index1 = din.readUnsignedShort();
+ index2 = din.readUnsignedShort();
break;
case NAMEANDTYPE:
name = "Name and Type";
- index1 = din.readShort();
- index2 = din.readShort();
+ index1 = din.readUnsignedShort();
+ index2 = din.readUnsignedShort();
break;
case STRING:
name = "String";
- index1 = din.readShort();
+ index1 = din.readUnsignedShort();
index2 = -1;
break;
case INTEGER:
@@ -304,7 +304,7 @@
StringBuffer xxBuf = new StringBuffer();
- len = din.readShort();
+ len = din.readUnsignedShort();
while (len > 0) {
c = (char) (din.readByte());
xxBuf.append(c);