Skip to content

Commit 515dd0f

Browse files
authored
fix buffer sharing (#24)
1 parent 8538673 commit 515dd0f

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/stream.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ function TranscodingStream(codec::Codec, stream::IO;
8282
else
8383
state = State(bufsize)
8484
end
85-
return TranscodingStream(codec, stream, State(bufsize))
85+
return TranscodingStream(codec, stream, state)
8686
end
8787

8888
function Base.show(io::IO, stream::TranscodingStream)

test/runtests.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,20 @@ TranscodingStreams.minoutsize(::QuadrupleCodec, ::Memory) = 4
335335
stream = NoopStream(TranscodingStream(QuadrupleCodec(), NoopStream(IOBuffer("foo"))))
336336
@test read(stream) == b"ffffoooooooo"
337337
close(stream)
338+
339+
# Buffers are shared.
340+
stream1 = TranscodingStream(QuadrupleCodec(), IOBuffer("foo"))
341+
stream2 = TranscodingStream(QuadrupleCodec(), stream1)
342+
@test stream1.state.buffer1 === stream2.state.buffer2
343+
close(stream1)
344+
close(stream2)
345+
346+
# Explicitly unshare buffers.
347+
stream1 = TranscodingStream(QuadrupleCodec(), IOBuffer("foo"))
348+
stream2 = TranscodingStream(QuadrupleCodec(), stream1, sharedbuf=false)
349+
@test stream1.state.buffer1 !== stream2.state.buffer2
350+
close(stream1)
351+
close(stream2)
338352
end
339353

340354
# TODO: Remove this in the future.

0 commit comments

Comments
 (0)