diff options
author | Paul Phillips <paulp@improving.org> | 2012-02-01 10:36:06 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-02-01 10:38:21 -0800 |
commit | c05b850cf5655943e861e0b898b253e83e0e094b (patch) | |
tree | 11f6acdfc0cd0ddead69225153286e6d645cd71d | |
parent | b2a21c4eacdddb0ee59a8c74c8a73e6cc34cb6bc (diff) | |
download | scala-c05b850cf5655943e861e0b898b253e83e0e094b.tar.gz scala-c05b850cf5655943e861e0b898b253e83e0e094b.tar.bz2 scala-c05b850cf5655943e861e0b898b253e83e0e094b.zip |
Fix for slice boundary condition.
Negative "to" index should be normalized to 0 before using it
in a difference operation.
-rwxr-xr-x | src/library/scala/collection/IndexedSeqOptimized.scala | 2 | ||||
-rw-r--r-- | test/files/run/buffer-slice.check | 1 | ||||
-rw-r--r-- | test/files/run/buffer-slice.scala | 5 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/library/scala/collection/IndexedSeqOptimized.scala b/src/library/scala/collection/IndexedSeqOptimized.scala index e2541f2a66..196e77c91b 100755 --- a/src/library/scala/collection/IndexedSeqOptimized.scala +++ b/src/library/scala/collection/IndexedSeqOptimized.scala @@ -104,7 +104,7 @@ trait IndexedSeqOptimized[+A, +Repr] extends IndexedSeqLike[A, Repr] { self => override /*IterableLike*/ def slice(from: Int, until: Int): Repr = { val lo = math.max(from, 0) - val hi = math.min(until, length) + val hi = math.min(math.max(until, 0), length) val elems = math.max(hi - lo, 0) val b = newBuilder b.sizeHint(elems) diff --git a/test/files/run/buffer-slice.check b/test/files/run/buffer-slice.check new file mode 100644 index 0000000000..5287aa9d7b --- /dev/null +++ b/test/files/run/buffer-slice.check @@ -0,0 +1 @@ +ArrayBuffer() diff --git a/test/files/run/buffer-slice.scala b/test/files/run/buffer-slice.scala new file mode 100644 index 0000000000..ddd82e0751 --- /dev/null +++ b/test/files/run/buffer-slice.scala @@ -0,0 +1,5 @@ +object Test { + def main(args: Array[String]): Unit = { + println(scala.collection.mutable.ArrayBuffer().slice(102450392, -2045033354)) + } +} |