mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-04-27 19:09:47 +03:00
fix positional reader discarding (#31593)
closes #30151 closes #30126 Reviewed-on: https://codeberg.org/ziglang/zig/pulls/31593 Reviewed-by: Ryan Liptak <squeek502@noreply.codeberg.org> Co-authored-by: glowsquid <sachabarsayuracko@gmail.com> Co-committed-by: glowsquid <sachabarsayuracko@gmail.com>
This commit is contained in:
@@ -309,7 +309,9 @@ fn discard(io_reader: *Io.Reader, limit: Io.Limit) Io.Reader.Error!usize {
|
||||
return 0;
|
||||
};
|
||||
const logical_pos = logicalPos(r);
|
||||
const delta = @min(@intFromEnum(limit), size - logical_pos);
|
||||
const bytes_remaining = size - logical_pos;
|
||||
if (bytes_remaining == 0) return error.EndOfStream;
|
||||
const delta = @min(@intFromEnum(limit), bytes_remaining);
|
||||
setLogicalPos(r, logical_pos + delta);
|
||||
return delta;
|
||||
},
|
||||
|
||||
@@ -85,6 +85,28 @@ test "File.Writer.seekTo" {
|
||||
try expect(fw.logicalPos() == 1234);
|
||||
}
|
||||
|
||||
test "file discard" {
|
||||
var tmp = tmpDir(.{});
|
||||
defer tmp.cleanup();
|
||||
|
||||
const io = testing.io;
|
||||
|
||||
const tmp_file_name = "temp_test_file.txt";
|
||||
var file = try tmp.dir.createFile(io, tmp_file_name, .{ .read = true });
|
||||
defer file.close(io);
|
||||
|
||||
var fw = file.writerStreaming(io, &.{});
|
||||
|
||||
try fw.interface.writeAll("test");
|
||||
|
||||
var fr = file.reader(io, &.{});
|
||||
const r = &fr.interface;
|
||||
|
||||
try std.testing.expectEqual(error.EndOfStream, r.discardAll(1024));
|
||||
try fr.seekTo(0);
|
||||
try std.testing.expectEqual(4, fr.interface.discardRemaining());
|
||||
}
|
||||
|
||||
test "File.setLength" {
|
||||
const io = testing.io;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user