Skip to content

Commit c9b42dc

Browse files
committed
inflating can also take streams larger than typemax(UInt32)
1 parent f9fddaa commit c9b42dc

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

src/decompression.jl

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,15 @@ end
157157
function TranscodingStreams.process(codec::DecompressorCodec, input::Memory, output::Memory, error::Error)
158158
zstream = codec.zstream
159159
zstream.next_in = input.ptr
160-
zstream.avail_in = input.size
160+
161+
avail_in = min(input.size, typemax(UInt32))
162+
zstream.avail_in = avail_in
161163
zstream.next_out = output.ptr
162-
zstream.avail_out = output.size
164+
avail_out = min(output.size, typemax(UInt32))
165+
zstream.avail_out = avail_out
163166
code = inflate!(zstream, Z_NO_FLUSH)
164-
Δin = Int(input.size - zstream.avail_in)
165-
Δout = Int(output.size - zstream.avail_out)
167+
Δin = Int(avail_in - zstream.avail_in)
168+
Δout = Int(avail_out - zstream.avail_out)
166169
if code == Z_OK
167170
return Δin, Δout, :ok
168171
elseif code == Z_STREAM_END

0 commit comments

Comments
 (0)