From 111305678cc606fa71133fcb8bf517e59b35b772 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 31 Jul 2025 14:58:59 -0700 Subject: [PATCH] std: match readVec fn prototype exactly this is not necessary according to zig language, but works around a flaw in the C backend --- lib/std/Io/Reader.zig | 4 ++-- lib/std/compress/flate/Decompress.zig | 2 +- lib/std/compress/zstd/Decompress.zig | 2 +- lib/std/fs/File.zig | 2 +- lib/std/net.zig | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/std/Io/Reader.zig b/lib/std/Io/Reader.zig index 079651082c..5b4de6445d 100644 --- a/lib/std/Io/Reader.zig +++ b/lib/std/Io/Reader.zig @@ -421,7 +421,7 @@ pub fn readVec(r: *Reader, data: [][]u8) Error!usize { } /// Writes to `Reader.buffer` or `data`, whichever has larger capacity. -pub fn defaultReadVec(r: *Reader, data: []const []u8) Error!usize { +pub fn defaultReadVec(r: *Reader, data: [][]u8) Error!usize { assert(r.seek == r.end); r.seek = 0; r.end = 0; @@ -1665,7 +1665,7 @@ fn endingStream(r: *Reader, w: *Writer, limit: Limit) StreamError!usize { return error.EndOfStream; } -fn endingReadVec(r: *Reader, data: []const []u8) Error!usize { +fn endingReadVec(r: *Reader, data: [][]u8) Error!usize { _ = r; _ = data; return error.EndOfStream; diff --git a/lib/std/compress/flate/Decompress.zig b/lib/std/compress/flate/Decompress.zig index 8a3a3f3f71..8faf8ac699 100644 --- a/lib/std/compress/flate/Decompress.zig +++ b/lib/std/compress/flate/Decompress.zig @@ -109,7 +109,7 @@ fn discard(r: *Reader, limit: std.Io.Limit) Reader.Error!usize { return n; } -fn readVec(r: *Reader, data: []const []u8) Reader.Error!usize { +fn readVec(r: *Reader, data: [][]u8) Reader.Error!usize { _ = data; assert(r.seek == r.end); r.rebase(flate.history_len) catch unreachable; diff --git a/lib/std/compress/zstd/Decompress.zig b/lib/std/compress/zstd/Decompress.zig index fefdf11931..d2f692ae61 100644 --- a/lib/std/compress/zstd/Decompress.zig +++ b/lib/std/compress/zstd/Decompress.zig @@ -131,7 +131,7 @@ fn discard(r: *Reader, limit: std.Io.Limit) Reader.Error!usize { return n; } -fn readVec(r: *Reader, data: []const []u8) Reader.Error!usize { +fn readVec(r: *Reader, data: [][]u8) Reader.Error!usize { _ = data; const d: *Decompress = @alignCast(@fieldParentPtr("reader", r)); assert(r.seek == r.end); diff --git a/lib/std/fs/File.zig b/lib/std/fs/File.zig index 354d559d79..9776854f18 100644 --- a/lib/std/fs/File.zig +++ b/lib/std/fs/File.zig @@ -1305,7 +1305,7 @@ pub const Reader = struct { } } - fn readVec(io_reader: *std.Io.Reader, data: []const []u8) std.Io.Reader.Error!usize { + fn readVec(io_reader: *std.Io.Reader, data: [][]u8) std.Io.Reader.Error!usize { const r: *Reader = @alignCast(@fieldParentPtr("interface", io_reader)); switch (r.mode) { .positional, .positional_reading => { diff --git a/lib/std/net.zig b/lib/std/net.zig index 2ffec84f9e..0146eab17c 100644 --- a/lib/std/net.zig +++ b/lib/std/net.zig @@ -1938,7 +1938,7 @@ pub const Stream = struct { return n; } - fn readVec(io_r: *std.Io.Reader, data: []const []u8) Io.Reader.Error!usize { + fn readVec(io_r: *std.Io.Reader, data: [][]u8) Io.Reader.Error!usize { const r: *Reader = @alignCast(@fieldParentPtr("interface_state", io_r)); var iovecs: [max_buffers_len]windows.ws2_32.WSABUF = undefined; const bufs_n, const data_size = try io_r.writableVectorWsa(&iovecs, data);