diff --git a/lib/std/Io.zig b/lib/std/Io.zig index 1511f0dcadd06f9748f06151f36954a2ed0dadba..b90276cfabe76017d27e643aaa00b9515f35b963 100644 --- a/lib/std/Io.zig +++ b/lib/std/Io.zig @@ -333,6 +333,7 @@ pub fn GenericReader( a.err = err; return error.ReadFailed; }; + if (n == 0) return error.EndOfStream; w.advance(n); return n; } diff --git a/lib/std/Io/DeprecatedReader.zig b/lib/std/Io/DeprecatedReader.zig index af1eda84153e9a5a5131e61bab8a98e2b504d7cf..59f163b39ca9d7cfccf608119f58d2458e689c44 100644 --- a/lib/std/Io/DeprecatedReader.zig +++ b/lib/std/Io/DeprecatedReader.zig @@ -397,6 +397,7 @@ pub const Adapter = struct { a.err = err; return error.ReadFailed; }; + if (n == 0) return error.EndOfStream; w.advance(n); return n; } diff --git a/lib/std/Io/test.zig b/lib/std/Io/test.zig index bf14f0c24ca15447283e531db5f125680a9767d0..c08879316e4bd600e8e2f4706908c7839132bc6d 100644 --- a/lib/std/Io/test.zig +++ b/lib/std/Io/test.zig @@ -180,3 +180,11 @@ test "GenericReader methods can return error.EndOfStream" { fbs.reader().isBytes("foo"), ); } + +test "Adapted DeprecatedReader EndOfStream" { + var fbs: io.FixedBufferStream([]const u8) = .{ .buffer = &.{}, .pos = 0 }; + const reader = fbs.reader(); + var buf: [1]u8 = undefined; + var adapted = reader.adaptToNewApi(&buf); + try std.testing.expectError(error.EndOfStream, adapted.new_interface.takeByte()); +}