mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-09 23:29:03 +00:00
fix test failures by adding readVec
This commit is contained in:
parent
afe9f3a9ec
commit
84e4343b0c
1 changed files with 21 additions and 4 deletions
|
|
@ -60,7 +60,7 @@ pub fn init(input: *Reader, container: Container, buffer: []u8) Decompress {
|
||||||
.stream = stream,
|
.stream = stream,
|
||||||
.rebase = rebase,
|
.rebase = rebase,
|
||||||
.discard = discard,
|
.discard = discard,
|
||||||
.readVec = Reader.indirectReadVec,
|
.readVec = readVec,
|
||||||
},
|
},
|
||||||
.buffer = buffer,
|
.buffer = buffer,
|
||||||
.seek = 0,
|
.seek = 0,
|
||||||
|
|
@ -109,6 +109,22 @@ fn discard(r: *Reader, limit: std.Io.Limit) Reader.Error!usize {
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn readVec(r: *Reader, data: []const []u8) Reader.Error!usize {
|
||||||
|
_ = data;
|
||||||
|
assert(r.seek == r.end);
|
||||||
|
r.rebase(flate.history_len) catch unreachable;
|
||||||
|
var writer: Writer = .{
|
||||||
|
.buffer = r.buffer,
|
||||||
|
.end = r.end,
|
||||||
|
.vtable = &.{ .drain = Writer.fixedDrain },
|
||||||
|
};
|
||||||
|
r.end += r.vtable.stream(r, &writer, .limited(writer.buffer.len - writer.end)) catch |err| switch (err) {
|
||||||
|
error.WriteFailed => unreachable,
|
||||||
|
else => |e| return e,
|
||||||
|
};
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
fn decodeLength(self: *Decompress, code: u8) !u16 {
|
fn decodeLength(self: *Decompress, code: u8) !u16 {
|
||||||
if (code > 28) return error.InvalidCode;
|
if (code > 28) return error.InvalidCode;
|
||||||
const ml = Token.matchLength(code);
|
const ml = Token.matchLength(code);
|
||||||
|
|
@ -1073,8 +1089,8 @@ test "reading into empty buffer" {
|
||||||
var in: Reader = .fixed(input);
|
var in: Reader = .fixed(input);
|
||||||
var decomp: Decompress = .init(&in, .raw, &.{});
|
var decomp: Decompress = .init(&in, .raw, &.{});
|
||||||
const r = &decomp.reader;
|
const r = &decomp.reader;
|
||||||
var buf: [0]u8 = undefined;
|
var bufs: [1][]u8 = .{&.{}};
|
||||||
try testing.expectEqual(0, try r.readVec(&.{&buf}));
|
try testing.expectEqual(0, try r.readVec(&bufs));
|
||||||
}
|
}
|
||||||
|
|
||||||
test "zlib header" {
|
test "zlib header" {
|
||||||
|
|
@ -1135,7 +1151,8 @@ test "zlib should not overshoot" {
|
||||||
|
|
||||||
var reader: std.Io.Reader = .fixed(&data);
|
var reader: std.Io.Reader = .fixed(&data);
|
||||||
|
|
||||||
var decompress: Decompress = .init(&reader, .zlib, &.{});
|
var decompress_buffer: [flate.max_window_len]u8 = undefined;
|
||||||
|
var decompress: Decompress = .init(&reader, .zlib, &decompress_buffer);
|
||||||
var out: [128]u8 = undefined;
|
var out: [128]u8 = undefined;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue