authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-06-27 14:43:32-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-01 16:35:30-07:00
logbc9db143c9e2beb166c637dd7fc56c4912f93794
treed0a012a59d96446892c6a1ed9a67650d58fe6604
parent55d6341eabf002017587863c92e6d5860527a72a

std.fs.File.Reader: fix wrong calculation when reading


4 files changed, 13 insertions(+), 9 deletions(-)

lib/std/fs/File.zig+2-2
......@@ -1083,7 +1083,7 @@ pub const Reader = struct {
10831083 return error.EndOfStream;
10841084 }
10851085 r.pos += n;
1086 return w.advanceVector(n);
1086 return n;
10871087 },
10881088 .streaming_reading => {
10891089 if (is_windows) {
......@@ -1106,7 +1106,7 @@ pub const Reader = struct {
11061106 return error.EndOfStream;
11071107 }
11081108 r.pos += n;
1109 return w.advanceVector(n);
1109 return n;
11101110 },
11111111 .failure => return error.ReadFailed,
11121112 }
lib/std/http.zig+7-3
......@@ -701,9 +701,13 @@ pub const Reader = struct {
701701 var hp: HeadParser = .{ .state = .seen_rn };
702702 var trailers_len: usize = 2;
703703 while (true) {
704 if (trailers_len >= in.buffer.len) return error.HttpHeadersOversize;
705 try in.fill(trailers_len + 1);
706 trailers_len += hp.feed(in.buffered()[trailers_len..]);
704 if (in.buffer.len - trailers_len == 0) return error.HttpHeadersOversize;
705 const remaining = in.buffered()[trailers_len..];
706 if (remaining.len == 0) {
707 try in.fillMore();
708 continue;
709 }
710 trailers_len += hp.feed(remaining);
707711 if (hp.state == .finished) {
708712 reader.state = .ready;
709713 reader.trailers = in.buffered()[0..trailers_len];
lib/std/io/Reader.zig+3-3
......@@ -942,7 +942,7 @@ pub fn fill(r: *Reader, n: usize) Error!void {
942942 writer.end = r.end;
943943 r.end += r.vtable.stream(r, &writer, .limited(r.buffer.len - r.end)) catch |err| switch (err) {
944944 error.WriteFailed => unreachable,
945 else => |e| return e,
945 error.ReadFailed, error.EndOfStream => |e| return e,
946946 };
947947 }
948948}
......@@ -1168,9 +1168,9 @@ fn takeMultipleOf7Leb128(r: *Reader, comptime Result: type) TakeLeb128Error!Resu
11681168
11691169/// Left-aligns data such that `r.seek` becomes zero.
11701170pub fn rebase(r: *Reader) void {
1171 if (r.seek == 0) return;
11711172 const data = r.buffer[r.seek..r.end];
1172 const dest = r.buffer[0..data.len];
1173 std.mem.copyForwards(u8, dest, data);
1173 @memmove(r.buffer[0..data.len], data);
11741174 r.seek = 0;
11751175 r.end = data.len;
11761176}
lib/std/net.zig+1-1
......@@ -1943,7 +1943,7 @@ pub const Stream = struct {
19431943 else => |err| return windows.unexpectedWSAError(err),
19441944 };
19451945 if (n == 0) return error.EndOfStream;
1946 return io_w.advanceVector(n);
1946 return n;
19471947 }
19481948 },
19491949 else => struct {