Index: classlib/modules/concurrent/src/main/java/java/util/concurrent/ConcurrentSkipListSet.java =================================================================== --- classlib/modules/concurrent/src/main/java/java/util/concurrent/ConcurrentSkipListSet.java (revision 1036325) +++ classlib/modules/concurrent/src/main/java/java/util/concurrent/ConcurrentSkipListSet.java (working copy) @@ -440,6 +440,23 @@ return new ConcurrentSkipListSet(m.descendingMap()); } + /** + * Base class method override + */ + public T[] toArray(T[] contents) { + int size = size(), index = 0; + List tempList = new ArrayList(size); + for (E entry : this) { + index++; + tempList.add((T) entry); + } + + if (index < contents.length && index < tempList.size()) { + tempList.set(index, null); + } + return tempList.toArray(contents); + } + // Support for resetting map in clone private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long mapOffset; Index: classlib/modules/luni/src/main/java/java/util/AbstractCollection.java =================================================================== --- classlib/modules/luni/src/main/java/java/util/AbstractCollection.java (revision 1035543) +++ classlib/modules/luni/src/main/java/java/util/AbstractCollection.java (working copy) @@ -354,7 +354,10 @@ contents = (T[]) Array.newInstance(ct, size); } for (E entry : this) { - contents[index++] = (T) entry; + if (index < size) { + contents[index++] = (T) entry; + } + else break; } if (index < contents.length) { contents[index] = null;