diff --git a/lib/std/Io.zig b/lib/std/Io.zig index 1511f0dcad..b90276cfab 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 af1eda8415..59f163b39c 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 bf14f0c24c..c08879316e 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()); +}