You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2007/05/30 14:57:28 UTC

svn commit: r542810 - in /harmony/enhanced/classlib/trunk/modules/luni/src: main/java/java/util/Vector.java test/java/org/apache/harmony/luni/tests/java/util/VectorTest.java

Author: tellison
Date: Wed May 30 05:57:26 2007
New Revision: 542810

URL: http://svn.apache.org/viewvc?view=rev&rev=542810
Log:
Vector#add(Object) should not delegate to addElement to avoid possible infinite recursion.

Modified:
    harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Vector.java
    harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/util/VectorTest.java

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Vector.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Vector.java?view=diff&rev=542810&r1=542809&r2=542810
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Vector.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Vector.java Wed May 30 05:57:26 2007
@@ -149,8 +149,12 @@
      * @return true
      */
     @Override
-    public boolean add(E object) {
-        addElement(object);
+    public synchronized boolean add(E object) {
+        if (elementCount == elementData.length) {
+            growByOne();
+        }
+        elementData[elementCount++] = object;
+        modCount++;
         return true;
     }
 

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/util/VectorTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/util/VectorTest.java?view=diff&rev=542810&r1=542809&r2=542810
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/util/VectorTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/test/java/org/apache/harmony/luni/tests/java/util/VectorTest.java Wed May 30 05:57:26 2007
@@ -22,15 +22,45 @@
 
 public class VectorTest extends TestCase {
 
-	/**
-	 * @tests java.util.Vector#toString()
-	 */
-	public void test_toString() {
-		// Ensure toString works with self-referencing elements.
-		Vector<Object> vec = new Vector<Object>(3);
-		vec.add(null);
-		vec.add(new Object());
-		vec.add(vec);
-		assertNotNull(vec.toString());
-	}
+    class SubVector<E> extends Vector<E> {
+
+        private static final long serialVersionUID = 1L;
+
+        public SubVector() {
+            super();
+        }
+
+        public synchronized boolean add(E obj) {
+            super.addElement(obj);
+            return true;
+        }
+
+        public synchronized void addElement(E obj) {
+            super.add(obj);
+        }
+
+        /**
+         * @tests java.util.Vector#add(Object)
+         */
+        @SuppressWarnings("nls")
+        public void test_add() {
+            SubVector<String> subvector = new SubVector<String>();
+            subvector.add("foo");
+            subvector.addElement("bar");
+            assertEquals("Expected two elements in vector", 2, subvector.size());
+        }
+
+    }
+
+    /**
+     * @tests java.util.Vector#toString()
+     */
+    public void test_toString() {
+        // Ensure toString works with self-referencing elements.
+        Vector<Object> vec = new Vector<Object>(3);
+        vec.add(null);
+        vec.add(new Object());
+        vec.add(vec);
+        assertNotNull(vec.toString());
+    }
 }