You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bcel-dev@jakarta.apache.org by tc...@apache.org on 2006/03/10 14:03:08 UTC

svn commit: r384783 - /jakarta/bcel/trunk/src/java/org/apache/bcel/generic/ConstantPoolGen.java

Author: tcurdt
Date: Fri Mar 10 05:03:07 2006
New Revision: 384783

URL: http://svn.apache.org/viewcvs?rev=384783&view=rev
Log:
fixed http://issues.apache.org/bugzilla/show_bug.cgi?id=18031


Modified:
    jakarta/bcel/trunk/src/java/org/apache/bcel/generic/ConstantPoolGen.java

Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/generic/ConstantPoolGen.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/generic/ConstantPoolGen.java?rev=384783&r1=384782&r2=384783&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/generic/ConstantPoolGen.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/generic/ConstantPoolGen.java Fri Mar 10 05:03:07 2006
@@ -87,22 +87,30 @@
 	ConstantString s  = (ConstantString)c;
 	ConstantUtf8   u8 = (ConstantUtf8)constants[s.getStringIndex()];
 
-	string_table.put(u8.getBytes(), new Index(i));
+    String key = u8.getBytes();
+    if (!string_table.containsKey(key))
+	string_table.put(key, new Index(i));
       } else if(c instanceof ConstantClass) {
 	ConstantClass s  = (ConstantClass)c;
 	ConstantUtf8  u8 = (ConstantUtf8)constants[s.getNameIndex()];
 
-	class_table.put(u8.getBytes(), new Index(i));
+    String key = u8.getBytes();
+    if (!class_table.containsKey(key))
+	class_table.put(key, new Index(i));
       } else if(c instanceof ConstantNameAndType) {
 	ConstantNameAndType n    = (ConstantNameAndType)c;
 	ConstantUtf8        u8   = (ConstantUtf8)constants[n.getNameIndex()];
 	ConstantUtf8        u8_2 = (ConstantUtf8)constants[n.getSignatureIndex()];
 
-	n_a_t_table.put(u8.getBytes() + NAT_DELIM + u8_2.getBytes(), new Index(i));
+    String key = u8.getBytes() + NAT_DELIM + u8_2.getBytes();
+    if (!n_a_t_table.containsKey(key))
+	n_a_t_table.put(key, new Index(i));
        } else if(c instanceof ConstantUtf8) {
          ConstantUtf8 u = (ConstantUtf8)c;
          
-         utf8_table.put(u.getBytes(), new Index(i));
+         String key = u.getBytes();
+         if (!utf8_table.containsKey(key))
+         utf8_table.put(key, new Index(i));
       } else if(c instanceof ConstantCP) {
 	ConstantCP          m     = (ConstantCP)c;
 	ConstantClass       clazz = (ConstantClass)constants[m.getClassIndex()];
@@ -187,6 +195,7 @@
     ret = index;
     constants[index++] = s;
 
+    if (!string_table.containsKey(str))
     string_table.put(str, new Index(ret));
 
     return ret;
@@ -218,6 +227,7 @@
     ret = index;
     constants[index++] = c;
 
+    if (!class_table.containsKey(clazz))
     class_table.put(clazz, new Index(ret));
 
     return ret;
@@ -365,6 +375,7 @@
     ret = index;
     constants[index++] = new ConstantUtf8(n);
 
+    if (!utf8_table.containsKey(n))
     utf8_table.put(n, new Index(ret));
 
     return ret;
@@ -488,7 +499,9 @@
     ret = index;
     constants[index++] = new ConstantNameAndType(name_index, signature_index);
 
-    n_a_t_table.put(name + NAT_DELIM + signature, new Index(ret));
+    String key = name + NAT_DELIM + signature;
+    if (!n_a_t_table.containsKey(key))
+    n_a_t_table.put(key, new Index(ret));
     return ret;
   }
 
@@ -535,8 +548,10 @@
     ret = index;
     constants[index++] = new ConstantMethodref(class_index, name_and_type_index);
 
-    cp_table.put(class_name + METHODREF_DELIM + method_name +
-		 METHODREF_DELIM + signature, new Index(ret));
+    String key = class_name + METHODREF_DELIM + method_name + METHODREF_DELIM + signature;
+    
+    if (!cp_table.containsKey(key))
+    cp_table.put(key, new Index(ret));
 
     return ret;
   }
@@ -587,8 +602,9 @@
     ret = index;
     constants[index++] = new ConstantInterfaceMethodref(class_index, name_and_type_index);
 
-    cp_table.put(class_name + IMETHODREF_DELIM + method_name +
-		 IMETHODREF_DELIM + signature, new Index(ret));
+    String key = class_name + IMETHODREF_DELIM + method_name + IMETHODREF_DELIM + signature;
+    if (!cp_table.containsKey(key))
+    cp_table.put(key, new Index(ret));
 
     return ret;
   }
@@ -635,7 +651,9 @@
     ret = index;
     constants[index++] = new ConstantFieldref(class_index, name_and_type_index);
 
-    cp_table.put(class_name + FIELDREF_DELIM + field_name + FIELDREF_DELIM + signature, new Index(ret));
+    String key = class_name + FIELDREF_DELIM + field_name + FIELDREF_DELIM + signature;
+    if (!cp_table.containsKey(key))
+    cp_table.put(key, new Index(ret));
 
     return ret;
   }



---------------------------------------------------------------------
To unsubscribe, e-mail: bcel-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bcel-dev-help@jakarta.apache.org