Skip to content

Commit c05b850

Browse files
committed
Fix for slice boundary condition.
Negative "to" index should be normalized to 0 before using it in a difference operation.
1 parent b2a21c4 commit c05b850

File tree

3 files changed

+7
-1
lines changed

3 files changed

+7
-1
lines changed

src/library/scala/collection/IndexedSeqOptimized.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ trait IndexedSeqOptimized[+A, +Repr] extends IndexedSeqLike[A, Repr] { self =>
104104
override /*IterableLike*/
105105
def slice(from: Int, until: Int): Repr = {
106106
val lo = math.max(from, 0)
107-
val hi = math.min(until, length)
107+
val hi = math.min(math.max(until, 0), length)
108108
val elems = math.max(hi - lo, 0)
109109
val b = newBuilder
110110
b.sizeHint(elems)

test/files/run/buffer-slice.check

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ArrayBuffer()

test/files/run/buffer-slice.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
object Test {
2+
def main(args: Array[String]): Unit = {
3+
println(scala.collection.mutable.ArrayBuffer().slice(102450392, -2045033354))
4+
}
5+
}

0 commit comments

Comments
 (0)