authorgravatar for carl@astholm.seCarl Åstholm <carl@astholm.se> 2025-08-20 01:08:41+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-08-19 16:18:02-07:00
log9e9cb3ad6dacf65cb8e48fa095afef14c666c7b9
treefb76ec3bcc3f20ab34170ee7fac599c76586c4f7
parent51a2c0feaf5880e42323b370c2365d1651e02c3b

Fix bugs in Windows readVec implementations


2 files changed, 14 insertions(+), 13 deletions(-)

lib/std/fs/File.zig+13-11
......@@ -1343,14 +1343,15 @@ pub const Reader = struct {
13431343 if (is_windows) {
13441344 // Unfortunately, `ReadFileScatter` cannot be used since it
13451345 // requires page alignment.
1346 assert(io_reader.seek == io_reader.end);
1347 io_reader.seek = 0;
1348 io_reader.end = 0;
1346 if (io_reader.seek == io_reader.end) {
1347 io_reader.seek = 0;
1348 io_reader.end = 0;
1349 }
13491350 const first = data[0];
1350 if (first.len >= io_reader.buffer.len) {
1351 if (first.len >= io_reader.buffer.len - io_reader.end) {
13511352 return readPositional(r, first);
13521353 } else {
1353 io_reader.end += try readPositional(r, io_reader.buffer);
1354 io_reader.end += try readPositional(r, io_reader.buffer[io_reader.end..]);
13541355 return 0;
13551356 }
13561357 }
......@@ -1391,14 +1392,15 @@ pub const Reader = struct {
13911392 if (is_windows) {
13921393 // Unfortunately, `ReadFileScatter` cannot be used since it
13931394 // requires page alignment.
1394 assert(io_reader.seek == io_reader.end);
1395 io_reader.seek = 0;
1396 io_reader.end = 0;
1395 if (io_reader.seek == io_reader.end) {
1396 io_reader.seek = 0;
1397 io_reader.end = 0;
1398 }
13971399 const first = data[0];
1398 if (first.len >= io_reader.buffer.len) {
1399 return readStreaming(r, first);
1400 if (first.len >= io_reader.buffer.len - io_reader.end) {
1401 return readPositional(r, first);
14001402 } else {
1401 io_reader.end += try readStreaming(r, io_reader.buffer);
1403 io_reader.end += try readPositional(r, io_reader.buffer[io_reader.end..]);
14021404 return 0;
14031405 }
14041406 }
lib/std/net.zig+1-2
......@@ -1992,8 +1992,7 @@ pub const Stream = struct {
19921992 };
19931993 if (n == 0) return error.EndOfStream;
19941994 if (n > data_size) {
1995 io_r.seek = 0;
1996 io_r.end = n - data_size;
1995 io_r.end += n - data_size;
19971996 return data_size;
19981997 }
19991998 return n;