ArrayDeque: avoid triggering JDK 1.6 bug in tests

Use System.arraycopy instead of Arrays.copyOfRange to
avoid triggering JDK-7174363 bug in copyOfRange.

Fix package of ArrayDequeTest
This commit is contained in:
Ilya Gorbunov
2020-01-24 01:37:45 +03:00
parent 6352cded1b
commit 8733d5f9ed
2 changed files with 11 additions and 6 deletions
@@ -550,12 +550,17 @@ public class ArrayDeque<E> : AbstractMutableList<E> {
if (isEmpty()) {
structure(head, emptyArray())
} else if (head < tail) {
@Suppress("UNCHECKED_CAST")
structure(head, elementData.sliceArray(head until tail))
return
}
val elements = arrayOfNulls<Any?>(size)
if (head < tail) {
elementData.copyInto(elements, startIndex = head, endIndex = tail)
structure(head, elements)
} else {
@Suppress("UNCHECKED_CAST")
structure(head - elementData.size, elementData.sliceArray(head until elementData.size).plus(elements = elementData.sliceArray(0 until tail)))
elementData.copyInto(elements, startIndex = head)
elementData.copyInto(elements, elementData.size - head, startIndex = 0, endIndex = tail)
structure(head - elementData.size, elements)
}
}
}