mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
std.Io.Reader: fix readVec at end
This commit is contained in:
parent
264bd7053e
commit
0294e91451
1 changed files with 15 additions and 1 deletions
|
|
@ -406,7 +406,10 @@ pub fn readVec(r: *Reader, data: [][]u8) Error!usize {
|
|||
r.seek = seek;
|
||||
data[i] = buf[copy_len..];
|
||||
defer data[i] = buf;
|
||||
return n + try r.vtable.readVec(r, data[i..]);
|
||||
return n + (r.vtable.readVec(r, data[i..]) catch |err| switch (err) {
|
||||
error.EndOfStream => if (n == 0) return error.EndOfStream else 0,
|
||||
error.ReadFailed => return error.ReadFailed,
|
||||
});
|
||||
}
|
||||
const n = seek - r.seek;
|
||||
r.seek = seek;
|
||||
|
|
@ -1657,6 +1660,17 @@ test "expected error.EndOfStream" {
|
|||
try std.testing.expectError(error.EndOfStream, r.take(3));
|
||||
}
|
||||
|
||||
test "readVec at end" {
|
||||
var reader_buffer: [8]u8 = "abcd1234".*;
|
||||
var reader: testing.Reader = .init(&reader_buffer, &.{});
|
||||
reader.interface.end = reader_buffer.len;
|
||||
|
||||
var out: [16]u8 = undefined;
|
||||
var vecs: [1][]u8 = .{&out};
|
||||
try testing.expectEqual(8, try reader.interface.readVec(&vecs));
|
||||
try testing.expectEqualStrings("abcd1234", vecs[0][0..8]);
|
||||
}
|
||||
|
||||
fn endingStream(r: *Reader, w: *Writer, limit: Limit) StreamError!usize {
|
||||
_ = r;
|
||||
_ = w;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue