Author: bodewig
Date: Wed Oct  8 08:20:53 2008
New Revision: 702907

URL: http://svn.apache.org/viewvc?rev=702907&view=rev
Log:
don't trust Vector's implemenation too much.  Tests passed in JDK 1.4.2 but 
failed on Java 6, now pass on both.

Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/util/VectorSet.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/util/VectorSet.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/util/VectorSet.java?rev=702907&r1=702906&r2=702907&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/util/VectorSet.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/util/VectorSet.java Wed Oct  8 
08:20:53 2008
@@ -41,8 +41,9 @@
     private final HashSet set = new HashSet();
 
     public synchronized boolean add(Object o) {
-        if (set.add(o)) {
-            return super.add(o);
+        if (!set.contains(o)) {
+            doAdd(size(), o);
+            return true;
         }
         return false;
     }
@@ -70,8 +71,8 @@
         }
     }
 
-    public void addElement(Object o) {
-        add(o);
+    public synchronized void addElement(Object o) {
+        doAdd(size(), o);
     }
 
     public synchronized boolean addAll(Collection c) {
@@ -90,11 +91,10 @@
         boolean changed = false;
         for (Iterator i = c.iterator(); i.hasNext(); ) {
             Object o = i.next();
-            boolean added = set.add(o);
-            if (added) {
-                super.add(index++, o);
+            if (!set.contains(o)) {
+                doAdd(index++, o);
+                changed = true;
             }
-            changed |= added;
         }
         return changed;
     }
@@ -190,7 +190,7 @@
     public synchronized Object set(int index, Object o) {
         Object orig = get(index);
         if (set.add(o)) {
-            super.set(index, o);
+            elementData[index] = o;
             set.remove(orig);
         } else {
             int oldIndexOfO = indexOf(o);


Reply via email to