]> source.dussan.org Git - javassist.git/commitdiff
fixed a bug on renameClass().
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Tue, 10 Jan 2006 18:35:51 +0000 (18:35 +0000)
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Tue, 10 Jan 2006 18:35:51 +0000 (18:35 +0000)
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@232 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

src/main/javassist/bytecode/ConstPool.java

index 83159d216febeca8bfe5e80dd08424dc420b3c46..6a1660ad255cd609bbb773d7164a10a1ce58d981 100644 (file)
@@ -868,14 +868,18 @@ public final class ConstPool {
     /**
      * Replaces all occurrences of a class name.
      *
-     * @param oldName           the replaced name
-     * @param newName           the substituted name.
+     * @param oldName           the replaced name (JVM-internal representation).
+     * @param newName           the substituted name (JVM-internal representation).
      */
     public void renameClass(String oldName, String newName) {
         LongVector v = items;
         int size = numOfItems;
-        for (int i = 1; i < size; ++i)
-            ((ConstInfo)v.elementAt(i)).renameClass(this, oldName, newName);
+        classes = new HashMap(classes.size() * 2);
+        for (int i = 1; i < size; ++i) {
+            ConstInfo ci = (ConstInfo)v.elementAt(i);
+            ci.renameClass(this, oldName, newName);
+            ci.makeHashtable(this);
+        }
     }
 
     /**
@@ -887,8 +891,12 @@ public final class ConstPool {
     public void renameClass(Map classnames) {
         LongVector v = items;
         int size = numOfItems;
-        for (int i = 1; i < size; ++i)
-            ((ConstInfo)v.elementAt(i)).renameClass(this, classnames);
+        classes = new HashMap(classes.size() * 2);
+        for (int i = 1; i < size; ++i) {
+            ConstInfo ci = (ConstInfo)v.elementAt(i);
+            ci.renameClass(this, classnames);
+            ci.makeHashtable(this);
+        }
     }
 
     private void read(DataInputStream in) throws IOException {