File tree Expand file tree Collapse file tree 3 files changed +17
-7
lines changed Expand file tree Collapse file tree 3 files changed +17
-7
lines changed Original file line number Diff line number Diff line change @@ -170,13 +170,18 @@ end
170
170
# These methods are overloaded for the `Noop` codec because it has only one
171
171
# buffer for efficiency.
172
172
173
- function fillbuffer (stream:: NoopStream ; eager:: Bool = false )
173
+ function fillbuffer (stream:: NoopStream ; eager:: Bool = false ):: Int
174
174
changemode! (stream, :read )
175
175
buffer = stream. buffer1
176
176
@assert buffer === stream. buffer2
177
177
if stream. stream isa TranscodingStream && buffer === stream. stream. buffer1
178
178
# Delegate the operation when buffers are shared.
179
- return fillbuffer (stream. stream, eager = eager)
179
+ underlying_mode:: Symbol = stream. stream. state. mode
180
+ if underlying_mode === :idle || underlying_mode === :read
181
+ return fillbuffer (stream. stream, eager = eager)
182
+ else
183
+ return 0
184
+ end
180
185
end
181
186
nfilled:: Int = 0
182
187
while ((! eager && buffersize (buffer) == 0 ) || (eager && makemargin! (buffer, 0 , eager = true ) > 0 )) && ! eof (stream. stream)
Original file line number Diff line number Diff line change @@ -706,10 +706,15 @@ end
706
706
707
707
# Read as much data as possbile from `input` to the margin of `output`.
708
708
# This function will not block if `input` has buffered data.
709
- function readdata! (input:: IO , output:: Buffer )
709
+ function readdata! (input:: IO , output:: Buffer ):: Int
710
710
if input isa TranscodingStream && input. buffer1 === output
711
711
# Delegate the operation to the underlying stream for shared buffers.
712
- return fillbuffer (input)
712
+ mode:: Symbol = input. state. mode
713
+ if mode === :idle || mode === :read
714
+ return fillbuffer (input)
715
+ else
716
+ return 0
717
+ end
713
718
end
714
719
nread:: Int = 0
715
720
navail = bytesavailable (input)
Original file line number Diff line number Diff line change @@ -271,8 +271,8 @@ DoubleFrameDecoderStream(stream::IO; kwargs...) = TranscodingStream(DoubleFrameD
271
271
stop_on_end= true ,
272
272
)
273
273
))
274
- @test_broken read (s1) == b ""
275
- @test_broken eof (s1)
274
+ @test read (s1) == b ""
275
+ @test eof (s1)
276
276
277
277
s2 = NoopStream (
278
278
DoubleFrameDecoderStream (
@@ -281,7 +281,7 @@ DoubleFrameDecoderStream(stream::IO; kwargs...) = TranscodingStream(DoubleFrameD
281
281
)
282
282
)
283
283
@test read (s2) == b ""
284
- @test_broken eof (s2)
284
+ @test eof (s2)
285
285
end
286
286
287
287
test_roundtrip_read (DoubleFrameEncoderStream, DoubleFrameDecoderStream)
You can’t perform that action at this time.
0 commit comments