| author | |
| committer | |
| log | fd2718f82ab70d99186f43845e4291515efb66a5 |
| tree | eb8774b79fb27efaf4fe409359d96597e6bdaa52 |
| parent | 8bd0af5eb97c8b76e519f4d61d391b04d99658eb |
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>2 files changed, 25 insertions(+), 1 deletions(-)
lib/std/Io/File/Reader.zig+3-1| ... | @@ -309,7 +309,9 @@ fn discard(io_reader: *Io.Reader, limit: Io.Limit) Io.Reader.Error!usize { | ... | @@ -309,7 +309,9 @@ fn discard(io_reader: *Io.Reader, limit: Io.Limit) Io.Reader.Error!usize { |
| 309 | return 0; | 309 | return 0; |
| 310 | }; | 310 | }; |
| 311 | const logical_pos = logicalPos(r); | 311 | const logical_pos = logicalPos(r); |
| 312 | const delta = @min(@intFromEnum(limit), size - logical_pos); | 312 | const bytes_remaining = size - logical_pos; |
| 313 | if (bytes_remaining == 0) return error.EndOfStream; | ||
| 314 | const delta = @min(@intFromEnum(limit), bytes_remaining); | ||
| 313 | setLogicalPos(r, logical_pos + delta); | 315 | setLogicalPos(r, logical_pos + delta); |
| 314 | return delta; | 316 | return delta; |
| 315 | }, | 317 | }, |
lib/std/Io/test.zig+22| ... | @@ -85,6 +85,28 @@ test "File.Writer.seekTo" { | ... | @@ -85,6 +85,28 @@ test "File.Writer.seekTo" { |
| 85 | try expect(fw.logicalPos() == 1234); | 85 | try expect(fw.logicalPos() == 1234); |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | test "file discard" { | ||
| 89 | var tmp = tmpDir(.{}); | ||
| 90 | defer tmp.cleanup(); | ||
| 91 | |||
| 92 | const io = testing.io; | ||
| 93 | |||
| 94 | const tmp_file_name = "temp_test_file.txt"; | ||
| 95 | var file = try tmp.dir.createFile(io, tmp_file_name, .{ .read = true }); | ||
| 96 | defer file.close(io); | ||
| 97 | |||
| 98 | var fw = file.writerStreaming(io, &.{}); | ||
| 99 | |||
| 100 | try fw.interface.writeAll("test"); | ||
| 101 | |||
| 102 | var fr = file.reader(io, &.{}); | ||
| 103 | const r = &fr.interface; | ||
| 104 | |||
| 105 | try std.testing.expectEqual(error.EndOfStream, r.discardAll(1024)); | ||
| 106 | try fr.seekTo(0); | ||
| 107 | try std.testing.expectEqual(4, fr.interface.discardRemaining()); | ||
| 108 | } | ||
| 109 | |||
| 88 | test "File.setLength" { | 110 | test "File.setLength" { |
| 89 | const io = testing.io; | 111 | const io = testing.io; |
| 90 | 112 |