From 59031543e23fa25e7c526336a6c51d44b329a673 Mon Sep 17 00:00:00 2001 From: Abduqodiri Qurbonzoda Date: Tue, 15 Jun 2021 04:10:04 +0300 Subject: [PATCH] Throw on invalid AbstractMutableList.addAll index #KT-47211 --- .../src/main/kotlin/kotlin/collections/AbstractMutableList.kt | 2 ++ .../stdlib/js/src/kotlin/collections/AbstractMutableList.kt | 2 ++ libraries/stdlib/test/collections/AbstractCollectionsTest.kt | 2 ++ 3 files changed, 6 insertions(+) diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/collections/AbstractMutableList.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/collections/AbstractMutableList.kt index 1ac07d505a8..4d85e16b6cc 100644 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/collections/AbstractMutableList.kt +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/collections/AbstractMutableList.kt @@ -35,6 +35,8 @@ public actual abstract class AbstractMutableList protected actual constructor } override actual fun addAll(index: Int, elements: Collection): Boolean { + AbstractList.checkPositionIndex(index, size) + var i = index var changed = false for (e in elements) { diff --git a/libraries/stdlib/js/src/kotlin/collections/AbstractMutableList.kt b/libraries/stdlib/js/src/kotlin/collections/AbstractMutableList.kt index 85e2254fbe1..1eba0a24ace 100644 --- a/libraries/stdlib/js/src/kotlin/collections/AbstractMutableList.kt +++ b/libraries/stdlib/js/src/kotlin/collections/AbstractMutableList.kt @@ -35,6 +35,8 @@ public actual abstract class AbstractMutableList protected actual constructor } actual override fun addAll(index: Int, elements: Collection): Boolean { + AbstractList.checkPositionIndex(index, size) + checkIsMutable() var _index = index var changed = false diff --git a/libraries/stdlib/test/collections/AbstractCollectionsTest.kt b/libraries/stdlib/test/collections/AbstractCollectionsTest.kt index fced3dc517f..2d6bebb229d 100644 --- a/libraries/stdlib/test/collections/AbstractCollectionsTest.kt +++ b/libraries/stdlib/test/collections/AbstractCollectionsTest.kt @@ -127,6 +127,8 @@ class AbstractCollectionsTest { assertEquals(listOf("ok", "element"), list) + assertFailsWith { list.addAll(-1, listOf()) } + compare(list.storage, list) { listBehavior() }