File tree Expand file tree Collapse file tree 1 file changed +6
-2
lines changed
core/kotlinx-coroutines-io/src/main/kotlin/kotlinx/coroutines/experimental/io Expand file tree Collapse file tree 1 file changed +6
-2
lines changed Original file line number Diff line number Diff line change @@ -2042,7 +2042,11 @@ internal class ByteBufferChannel(
20422042 while (true ) {
20432043 val writeOp = writeOp ? : return
20442044 val closed = closed
2045- if (closed == null && joining != null && state != = ReadWriteBufferState .Terminated ) return
2045+ if (closed == null && joining != null ) {
2046+ val state = state
2047+ if (state is ReadWriteBufferState .Writing || state is ReadWriteBufferState .ReadingWriting ) {
2048+ } else if (state != = ReadWriteBufferState .Terminated ) return
2049+ }
20462050 if (WriteOp .compareAndSet(this , writeOp, null )) {
20472051 if (closed == null ) writeOp.resume(Unit ) else writeOp.resumeWithException(closed.sendException)
20482052 return
@@ -2135,7 +2139,7 @@ internal class ByteBufferChannel(
21352139 return when {
21362140 closed != null -> false
21372141 joined == null -> state.capacity.availableForWrite < size && state != = ReadWriteBufferState .IdleEmpty
2138- else -> state != = ReadWriteBufferState .Terminated
2142+ else -> state != = ReadWriteBufferState .Terminated && state !is ReadWriteBufferState . Writing && state !is ReadWriteBufferState . ReadingWriting
21392143 }
21402144 }
21412145
You can’t perform that action at this time.
0 commit comments