diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-01-04 11:46:16 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-01-04 11:46:16 -0800 |
commit | 9dc2e23f6afc8700d973d5cfc8f4bdd9e415f7b2 (patch) | |
tree | f4fb59521c3a0a082c3115189f7617a6da8f9ad1 /src | |
parent | 47eb88159266170963b4af47b4f027a369320298 (diff) | |
parent | cf7b51db3b289d2b1782ffb863912217936dcccb (diff) | |
download | scala-9dc2e23f6afc8700d973d5cfc8f4bdd9e415f7b2.tar.gz scala-9dc2e23f6afc8700d973d5cfc8f4bdd9e415f7b2.tar.bz2 scala-9dc2e23f6afc8700d973d5cfc8f4bdd9e415f7b2.zip |
Merge pull request #1785 from non/bug/fix-copyToArray
Fix Iterator#copyToArray (fixes SI-6827).
Diffstat (limited to 'src')
-rw-r--r-- | src/library/scala/collection/Iterator.scala | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/library/scala/collection/Iterator.scala b/src/library/scala/collection/Iterator.scala index d7dc202fad..cb7d2095bc 100644 --- a/src/library/scala/collection/Iterator.scala +++ b/src/library/scala/collection/Iterator.scala @@ -1109,12 +1109,14 @@ 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}") var i = start - val end = start + math.min(len, xs.length) - while (hasNext && i < end) { + val end = start + math.min(len, xs.length - start) + while (i < end && hasNext) { xs(i) = next() i += 1 } + // TODO: return i - start so the caller knows how many values read? } /** Tests if another iterator produces the same values as this one. |