summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Iry <jamesiry@gmail.com>2013-02-19 08:14:16 -0800
committerJames Iry <jamesiry@gmail.com>2013-02-19 08:14:16 -0800
commit123161b9073eec6dae23b617d85409276849c143 (patch)
tree0efaf0266bf97e4fd5d4893045381a95887edf53
parentcc89bd71edfd4c88ca1099891e6c20b77379122a (diff)
parent348ff4b6176a379dba943a6b6e0dbc71410f454f (diff)
downloadscala-123161b9073eec6dae23b617d85409276849c143.tar.gz
scala-123161b9073eec6dae23b617d85409276849c143.tar.bz2
scala-123161b9073eec6dae23b617d85409276849c143.zip
Merge pull request #2128 from retronym/ticket/7128
SI-7128 Fix regression in copyToArray for empty arrays
-rw-r--r--src/library/scala/collection/Iterator.scala2
-rw-r--r--test/files/run/t6827.scala3
2 files changed, 4 insertions, 1 deletions
diff --git a/src/library/scala/collection/Iterator.scala b/src/library/scala/collection/Iterator.scala
index 696bc4ab5c..2bb5bd1df9 100644
--- a/src/library/scala/collection/Iterator.scala
+++ b/src/library/scala/collection/Iterator.scala
@@ -1111,7 +1111,7 @@ trait Iterator[+A] extends TraversableOnce[A] {
* $willNotTerminateInf
*/
def copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Unit = {
- require(start >= 0 && start < xs.length, s"start $start out of range ${xs.length}")
+ require(start >= 0 && (start < xs.length || xs.length == 0), s"start $start out of range ${xs.length}")
var i = start
val end = start + math.min(len, xs.length - start)
while (i < end && hasNext) {
diff --git a/test/files/run/t6827.scala b/test/files/run/t6827.scala
index 7e8918e3dc..8e17af09e2 100644
--- a/test/files/run/t6827.scala
+++ b/test/files/run/t6827.scala
@@ -28,4 +28,7 @@ object Test extends App {
tryit("read -1", 0, -1)
tryit("invalid read 0", 30, 0)
tryit("invalid read -1", 30, -1)
+
+ // okay, see SI-7128
+ "...".toIterator.copyToArray(new Array[Char](0), 0, 0)
}