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);