authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-30 00:25:17-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-31 22:10:11-07:00
log84e4343b0c26a11cc667f8df3f9863b65bf1fa36
treee5a35872d2cda29d4ab7e4bc4144df523dc918f9
parentafe9f3a9ec10e1d92fa02ef91168301daac47c67

fix test failures by adding readVec


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

lib/std/compress/flate/Decompress.zig+21-4
......@@ -60,7 +60,7 @@ pub fn init(input: *Reader, container: Container, buffer: []u8) Decompress {
6060 .stream = stream,
6161 .rebase = rebase,
6262 .discard = discard,
63 .readVec = Reader.indirectReadVec,
63 .readVec = readVec,
6464 },
6565 .buffer = buffer,
6666 .seek = 0,
......@@ -109,6 +109,22 @@ fn discard(r: *Reader, limit: std.Io.Limit) Reader.Error!usize {
109109 return n;
110110}
111111
112fn readVec(r: *Reader, data: []const []u8) Reader.Error!usize {
113 _ = data;
114 assert(r.seek == r.end);
115 r.rebase(flate.history_len) catch unreachable;
116 var writer: Writer = .{
117 .buffer = r.buffer,
118 .end = r.end,
119 .vtable = &.{ .drain = Writer.fixedDrain },
120 };
121 r.end += r.vtable.stream(r, &writer, .limited(writer.buffer.len - writer.end)) catch |err| switch (err) {
122 error.WriteFailed => unreachable,
123 else => |e| return e,
124 };
125 return 0;
126}
127
112128fn decodeLength(self: *Decompress, code: u8) !u16 {
113129 if (code > 28) return error.InvalidCode;
114130 const ml = Token.matchLength(code);
......@@ -1073,8 +1089,8 @@ test "reading into empty buffer" {
10731089 var in: Reader = .fixed(input);
10741090 var decomp: Decompress = .init(&in, .raw, &.{});
10751091 const r = &decomp.reader;
1076 var buf: [0]u8 = undefined;
1077 try testing.expectEqual(0, try r.readVec(&.{&buf}));
1092 var bufs: [1][]u8 = .{&.{}};
1093 try testing.expectEqual(0, try r.readVec(&bufs));
10781094}
10791095
10801096test "zlib header" {
......@@ -1135,7 +1151,8 @@ test "zlib should not overshoot" {
11351151
11361152 var reader: std.Io.Reader = .fixed(&data);
11371153
1138 var decompress: Decompress = .init(&reader, .zlib, &.{});
1154 var decompress_buffer: [flate.max_window_len]u8 = undefined;
1155 var decompress: Decompress = .init(&reader, .zlib, &decompress_buffer);
11391156 var out: [128]u8 = undefined;
11401157
11411158 {