Skip to content

Commit 84e4343

Browse files
committed
fix test failures by adding readVec
1 parent afe9f3a commit 84e4343

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

lib/std/compress/flate/Decompress.zig

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

112+
fn 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+
112128
fn 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

10801096
test "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
{

0 commit comments

Comments
 (0)