KT-31639: Fix Iterables.drop integer overflow
This commit is contained in:
committed by
Ilya Gorbunov
parent
e5565b817b
commit
c885cadde4
@@ -614,7 +614,7 @@ public fun <T> Iterable<T>.drop(n: Int): List<T> {
|
||||
}
|
||||
var count = 0
|
||||
for (item in this) {
|
||||
if (count++ >= n) list.add(item)
|
||||
if (count >= n) list.add(item) else ++count
|
||||
}
|
||||
return list.optimizeReadOnlyList()
|
||||
}
|
||||
|
||||
@@ -156,4 +156,10 @@ class IndexOverflowJVMTest {
|
||||
assertEquals(expectedEnd, dropTake.last())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun dropMaxValue() {
|
||||
val range = 0L..Int.MAX_VALUE + 1L
|
||||
assertEquals(listOf(Int.MAX_VALUE.toLong(), Int.MAX_VALUE + 1L), range.drop(Int.MAX_VALUE))
|
||||
}
|
||||
|
||||
}
|
||||
@@ -84,7 +84,7 @@ object Filtering : TemplateGroupBase() {
|
||||
}
|
||||
var count = 0
|
||||
for (item in this) {
|
||||
if (count++ >= n) list.add(item)
|
||||
if (count >= n) list.add(item) else ++count
|
||||
}
|
||||
return list.optimizeReadOnlyList()
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user