diff --git a/kotlinx-coroutines-core/common/src/Builders.common.kt b/kotlinx-coroutines-core/common/src/Builders.common.kt index 64bff500dc..606e9a4bdf 100644 --- a/kotlinx-coroutines-core/common/src/Builders.common.kt +++ b/kotlinx-coroutines-core/common/src/Builders.common.kt @@ -108,9 +108,11 @@ private class LazyDeferredCoroutine( parentContext: CoroutineContext, block: suspend CoroutineScope.() -> T ) : DeferredCoroutine(parentContext, active = false) { - private val continuation = block.createCoroutineUnintercepted(this, this) + private var continuation: Continuation? = block.createCoroutineUnintercepted(this, this) override fun onStart() { + val continuation = checkNotNull(this.continuation) { "Already started" } + this.continuation = null continuation.startCoroutineCancellable(this) } } @@ -195,9 +197,11 @@ private class LazyStandaloneCoroutine( parentContext: CoroutineContext, block: suspend CoroutineScope.() -> Unit ) : StandaloneCoroutine(parentContext, active = false) { - private val continuation = block.createCoroutineUnintercepted(this, this) + private var continuation: Continuation? = block.createCoroutineUnintercepted(this, this) override fun onStart() { + val continuation = checkNotNull(this.continuation) { "Already started" } + this.continuation = null continuation.startCoroutineCancellable(this) } }