summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-01-04 11:46:16 -0800
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-01-04 11:46:16 -0800
commit9dc2e23f6afc8700d973d5cfc8f4bdd9e415f7b2 (patch)
treef4fb59521c3a0a082c3115189f7617a6da8f9ad1 /src
parent47eb88159266170963b4af47b4f027a369320298 (diff)
parentcf7b51db3b289d2b1782ffb863912217936dcccb (diff)
downloadscala-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.scala6
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.