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

[email protected]
Newsgroups gmane.comp.jakarta.bcel.devel
Message-ID <[email protected]>
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;
   }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.