Index: modules/luni/src/main/java/java/util/AbstractList.java =================================================================== --- modules/luni/src/main/java/java/util/AbstractList.java.orig 2006-04-21 17:49:13.000000000 +0100 +++ modules/luni/src/main/java/java/util/AbstractList.java 2006-04-21 20:05:13.000000000 +0100 @@ -244,7 +244,8 @@ public boolean addAll(Collection collection) { if (modCount == fullList.modCount) { - boolean result = fullList.addAll(size, collection); + boolean result = fullList.addAll(offset+size, + collection); if (result) { size += collection.size(); modCount = fullList.modCount; Index: modules/luni/src/test/java/tests/api/java/util/AbstractListTest.java =================================================================== --- modules/luni/src/test/java/tests/api/java/util/AbstractListTest.java.orig 2006-04-21 17:35:05.000000000 +0100 +++ modules/luni/src/test/java/tests/api/java/util/AbstractListTest.java 2006-04-21 19:45:23.000000000 +0100 @@ -191,6 +191,38 @@ } } + /** + * @tests java.util.AbstractList#subList(int, int) + */ + public void test_subList_addAll() { + // Regression for HARMONY-390 + List mainList = new ArrayList(); + Object[] mainObjects = { "a", "b", "c" }; + mainList.addAll(Arrays.asList(mainObjects)); + List subList = mainList.subList(1,2); + assertFalse("subList should not contain \"a\"", + subList.contains("a")); + assertFalse("subList should not contain \"c\"", + subList.contains("c")); + assertTrue("subList should contain \"b\"", + subList.contains("b")); + Object[] subObjects = { "one", "two", "three" }; + subList.addAll(Arrays.asList(subObjects)); + assertFalse("subList should not contain \"a\"", + subList.contains("a")); + assertFalse("subList should not contain \"c\"", + subList.contains("c")); + Object[] expected = { "b", "one", "two", "three" }; + ListIterator iter = subList.listIterator(); + for (int i = 0; i < expected.length; i++) { + assertTrue("subList should contain "+expected[i], + subList.contains(expected[i])); + assertTrue("should be more elements", iter.hasNext()); + assertEquals("element in incorrect position", + expected[i], iter.next()); + } + } + protected void setUp() { }