authorgravatar for igor.anic@gmail.comIgor Anić <igor.anic@gmail.com> 2024-02-14 13:32:19+01:00
committergravatar for igor.anic@gmail.comIgor Anić <igor.anic@gmail.com> 2024-02-14 18:28:20+01:00
logf81b3a2095248e3dbb8b422d693dc752828dc94d
tree2cd2000ee076c22269bcffdf0628c63e1d526bf1
parentcb3fe277bbbdcf432530cd0a1f3d05d3d924675b

fix reading input stream during decompression

By using read instead of readAll decompression reader could get bytes then available in the stream and then later wrongly failed with end of stream.

1 files changed, 1 insertions(+), 1 deletions(-)

lib/std/compress/flate/bit_reader.zig+1-1
...@@ -55,7 +55,7 @@ pub fn BitReader(comptime ReaderType: type) type {...@@ -55,7 +55,7 @@ pub fn BitReader(comptime ReaderType: type) type {
55 (self.nbits >> 3); // 0 for 0-7, 1 for 8-16, ... same as / 855 (self.nbits >> 3); // 0 for 0-7, 1 for 8-16, ... same as / 8
5656
57 var buf: [8]u8 = [_]u8{0} ** 8;57 var buf: [8]u8 = [_]u8{0} ** 8;
58 const bytes_read = self.forward_reader.read(buf[0..empty_bytes]) catch 0;58 const bytes_read = self.forward_reader.readAll(buf[0..empty_bytes]) catch 0;
59 if (bytes_read > 0) {59 if (bytes_read > 0) {
60 const u: u64 = std.mem.readInt(u64, buf[0..8], .little);60 const u: u64 = std.mem.readInt(u64, buf[0..8], .little);
61 self.bits |= u << @as(u6, @intCast(self.nbits));61 self.bits |= u << @as(u6, @intCast(self.nbits));