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(
2042
2042
while (true ) {
2043
2043
val writeOp = writeOp ? : return
2044
2044
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
+ }
2046
2050
if (WriteOp .compareAndSet(this , writeOp, null )) {
2047
2051
if (closed == null ) writeOp.resume(Unit ) else writeOp.resumeWithException(closed.sendException)
2048
2052
return
@@ -2135,7 +2139,7 @@ internal class ByteBufferChannel(
2135
2139
return when {
2136
2140
closed != null -> false
2137
2141
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
2139
2143
}
2140
2144
}
2141
2145
You can’t perform that action at this time.
0 commit comments