You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ml...@apache.org on 2006/05/05 12:49:39 UTC

svn commit: r400041 - in /incubator/harmony/enhanced/classlib/trunk/modules/luni/src: main/java/java/util/AbstractList.java test/java/tests/api/java/util/AbstractListTest.java

Author: mloenko
Date: Fri May  5 03:49:35 2006
New Revision: 400041

URL: http://svn.apache.org/viewcvs?rev=400041&view=rev
Log:
fixes for HARMONY-389
AbstractList subList bounds checking is wrong

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/AbstractList.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/AbstractListTest.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/AbstractList.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/AbstractList.java?rev=400041&r1=400040&r2=400041&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/AbstractList.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/AbstractList.java Fri May  5 03:49:35 2006
@@ -256,7 +256,7 @@
 
 		public Object get(int location) {
 			if (modCount == fullList.modCount) {
-				if (0 <= location && location <= size)
+				if (0 <= location && location < size)
 					return fullList.get(location + offset);
 				throw new IndexOutOfBoundsException();
 			}
@@ -280,7 +280,7 @@
 
 		public Object remove(int location) {
 			if (modCount == fullList.modCount) {
-				if (0 <= location && location <= size) {
+				if (0 <= location && location < size) {
 					Object result = fullList.remove(location + offset);
 					size--;
 					modCount = fullList.modCount;
@@ -304,7 +304,7 @@
 
 		public Object set(int location, Object object) {
 			if (modCount == fullList.modCount) {
-				if (0 <= location && location <= size)
+				if (0 <= location && location < size)
 					return fullList.set(location + offset, object);
 				throw new IndexOutOfBoundsException();
 			}

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/AbstractListTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/AbstractListTest.java?rev=400041&r1=400040&r2=400041&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/AbstractListTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/AbstractListTest.java Fri May  5 03:49:35 2006
@@ -161,13 +161,38 @@
 				"Sublist returned should not have implemented Random Access interface",
 				!(ll.subList(3, 7) instanceof RandomAccess));
 
-	}
+        }
 
-	protected void setUp() {
-	}
+	/**
+     * @tests java.util.AbstractList#subList(int, int)
+     */
+    public void test_subList_empty() {
+        // Regression for HARMONY-389
+        List al = new ArrayList();
+        al.add("one");
+        List emptySubList = al.subList(0, 0);
 
-	protected void tearDown() {
-	}
+        try {
+            emptySubList.get(0);
+            fail("emptySubList.get(0) should throw IndexOutOfBoundsException");
+        } catch (IndexOutOfBoundsException e) {
+            // expected
+        }
+
+        try {
+            emptySubList.set(0, "one");
+            fail("emptySubList.set(0,Object) should throw IndexOutOfBoundsException");
+        } catch (IndexOutOfBoundsException e) {
+            // expected
+        }
+
+        try {
+            emptySubList.remove(0);
+            fail("emptySubList.remove(0) should throw IndexOutOfBoundsException");
+        } catch (IndexOutOfBoundsException e) {
+            // expected
+        }
+    }
 
 	protected void doneSuite() {
 	}