diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/sequences/Sequences.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/sequences/Sequences.kt index 66b59747230..0612d88252c 100644 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/sequences/Sequences.kt +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/sequences/Sequences.kt @@ -8,13 +8,10 @@ package kotlin.sequences import kotlin.comparisons.* internal actual class ConstrainedOnceSequence actual constructor(sequence: Sequence) : Sequence { - // TODO: not MT friendly. - private var sequenceRef : Sequence? = sequence + private val sequenceRef = kotlin.concurrent.AtomicReference?>(sequence) override actual fun iterator(): Iterator { - val sequence = sequenceRef - if (sequence == null) throw IllegalStateException("This sequence can be consumed only once.") - sequenceRef = null + val sequence = sequenceRef.getAndSet(null) ?: throw IllegalStateException("This sequence can be consumed only once.") return sequence.iterator() } }