Skip to content

Commit 05b3f8e

Browse files
authored
delay initialization of buffer (#65)
1 parent 5a75344 commit 05b3f8e

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/stream.jl

+8-5
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,8 @@ end
284284
function Base.readuntil(stream::TranscodingStream, delim::UInt8; keep::Bool=false)
285285
ready_to_read!(stream)
286286
buffer1 = stream.state.buffer1
287-
ret = Vector{UInt8}(undef, 0)
287+
# delay initialization so as to reduce the number of buffer resizes
288+
local ret::Vector{UInt8}
288289
filled = 0
289290
while !eof(stream)
290291
p = findbyte(buffer1, delim)
@@ -295,12 +296,14 @@ function Base.readuntil(stream::TranscodingStream, delim::UInt8; keep::Bool=fals
295296
if !keep
296297
sz -= 1
297298
end
298-
resize!(ret, filled + sz)
299299
else
300300
sz = buffersize(buffer1)
301-
if length(ret) < filled + sz
302-
resize!(ret, filled + sz)
303-
end
301+
end
302+
if @isdefined(ret)
303+
resize!(ret, filled + sz)
304+
else
305+
@assert filled == 0
306+
ret = Vector{UInt8}(undef, sz)
304307
end
305308
copydata!(pointer(ret, filled+1), buffer1, sz)
306309
filled += sz

0 commit comments

Comments
 (0)