From ecd3ea9bd2f543f44813da21fd6b77d53dd72d7c Mon Sep 17 00:00:00 2001 From: Kendall Condon Date: Mon, 28 Jul 2025 19:13:22 -0400 Subject: [PATCH] DeprecatedReader.Adapted: fix EndOfStream handling --- lib/std/Io.zig | 1 + lib/std/Io/DeprecatedReader.zig | 1 + lib/std/Io/test.zig | 8 ++++++++ 3 files changed, 10 insertions(+) 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()); +} -- 2.54.0