authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-22 17:06:25-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-22 17:06:25-07:00
logec5cdb2fe394b6a8ca3d30b7652049f39c1aecdb
treeae21be4e1c84b14872e4b80666459dd4082a5c0a
parent91640f5f819de5bb6211d6bfa3c778737fa822aa

std: fix deprecated writer not handling the buffer


2 files changed, 12 insertions(+), 2 deletions(-)

lib/std/Io.zig+6-1
......@@ -419,9 +419,14 @@ pub fn GenericWriter(
419419 new_interface: Writer,
420420 err: ?Error = null,
421421
422 fn drain(w: *Writer, data: []const []const u8, splat: usize) Writer.Error!usize {
422 fn drain(w: *std.io.Writer, data: []const []const u8, splat: usize) std.io.Writer.Error!usize {
423423 _ = splat;
424424 const a: *@This() = @alignCast(@fieldParentPtr("new_interface", w));
425 const buffered = w.buffered();
426 if (buffered.len != 0) return w.consume(a.derp_writer.write(buffered) catch |err| {
427 a.err = err;
428 return error.WriteFailed;
429 });
425430 return a.derp_writer.write(data[0]) catch |err| {
426431 a.err = err;
427432 return error.WriteFailed;
lib/std/Io/DeprecatedWriter.zig+6-1
......@@ -100,7 +100,12 @@ pub const Adapter = struct {
100100
101101 fn drain(w: *std.io.Writer, data: []const []const u8, splat: usize) std.io.Writer.Error!usize {
102102 _ = splat;
103 const a: *@This() = @fieldParentPtr("new_interface", w);
103 const a: *@This() = @alignCast(@fieldParentPtr("new_interface", w));
104 const buffered = w.buffered();
105 if (buffered.len != 0) return w.consume(a.derp_writer.write(buffered) catch |err| {
106 a.err = err;
107 return error.WriteFailed;
108 });
104109 return a.derp_writer.write(data[0]) catch |err| {
105110 a.err = err;
106111 return error.WriteFailed;