| author | |
| committer | |
| log | bc9db143c9e2beb166c637dd7fc56c4912f93794 |
| tree | d0a012a59d96446892c6a1ed9a67650d58fe6604 |
| parent | 55d6341eabf002017587863c92e6d5860527a72a |
4 files changed, 13 insertions(+), 9 deletions(-)
lib/std/fs/File.zig+2-2| ... | @@ -1083,7 +1083,7 @@ pub const Reader = struct { | ... | @@ -1083,7 +1083,7 @@ pub const Reader = struct { |
| 1083 | return error.EndOfStream; | 1083 | return error.EndOfStream; |
| 1084 | } | 1084 | } |
| 1085 | r.pos += n; | 1085 | r.pos += n; |
| 1086 | return w.advanceVector(n); | 1086 | return n; |
| 1087 | }, | 1087 | }, |
| 1088 | .streaming_reading => { | 1088 | .streaming_reading => { |
| 1089 | if (is_windows) { | 1089 | if (is_windows) { |
| ... | @@ -1106,7 +1106,7 @@ pub const Reader = struct { | ... | @@ -1106,7 +1106,7 @@ pub const Reader = struct { |
| 1106 | return error.EndOfStream; | 1106 | return error.EndOfStream; |
| 1107 | } | 1107 | } |
| 1108 | r.pos += n; | 1108 | r.pos += n; |
| 1109 | return w.advanceVector(n); | 1109 | return n; |
| 1110 | }, | 1110 | }, |
| 1111 | .failure => return error.ReadFailed, | 1111 | .failure => return error.ReadFailed, |
| 1112 | } | 1112 | } |
lib/std/http.zig+7-3| ... | @@ -701,9 +701,13 @@ pub const Reader = struct { | ... | @@ -701,9 +701,13 @@ pub const Reader = struct { |
| 701 | var hp: HeadParser = .{ .state = .seen_rn }; | 701 | var hp: HeadParser = .{ .state = .seen_rn }; |
| 702 | var trailers_len: usize = 2; | 702 | var trailers_len: usize = 2; |
| 703 | while (true) { | 703 | while (true) { |
| 704 | if (trailers_len >= in.buffer.len) return error.HttpHeadersOversize; | 704 | if (in.buffer.len - trailers_len == 0) return error.HttpHeadersOversize; |
| 705 | try in.fill(trailers_len + 1); | 705 | const remaining = in.buffered()[trailers_len..]; |
| 706 | trailers_len += hp.feed(in.buffered()[trailers_len..]); | 706 | if (remaining.len == 0) { |
| 707 | try in.fillMore(); | ||
| 708 | continue; | ||
| 709 | } | ||
| 710 | trailers_len += hp.feed(remaining); | ||
| 707 | if (hp.state == .finished) { | 711 | if (hp.state == .finished) { |
| 708 | reader.state = .ready; | 712 | reader.state = .ready; |
| 709 | reader.trailers = in.buffered()[0..trailers_len]; | 713 | 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 { | ... | @@ -942,7 +942,7 @@ pub fn fill(r: *Reader, n: usize) Error!void { |
| 942 | writer.end = r.end; | 942 | writer.end = r.end; |
| 943 | r.end += r.vtable.stream(r, &writer, .limited(r.buffer.len - r.end)) catch |err| switch (err) { | 943 | r.end += r.vtable.stream(r, &writer, .limited(r.buffer.len - r.end)) catch |err| switch (err) { |
| 944 | error.WriteFailed => unreachable, | 944 | error.WriteFailed => unreachable, |
| 945 | else => |e| return e, | 945 | error.ReadFailed, error.EndOfStream => |e| return e, |
| 946 | }; | 946 | }; |
| 947 | } | 947 | } |
| 948 | } | 948 | } |
| ... | @@ -1168,9 +1168,9 @@ fn takeMultipleOf7Leb128(r: *Reader, comptime Result: type) TakeLeb128Error!Resu | ... | @@ -1168,9 +1168,9 @@ fn takeMultipleOf7Leb128(r: *Reader, comptime Result: type) TakeLeb128Error!Resu |
| 1168 | 1168 | ||
| 1169 | /// Left-aligns data such that `r.seek` becomes zero. | 1169 | /// Left-aligns data such that `r.seek` becomes zero. |
| 1170 | pub fn rebase(r: *Reader) void { | 1170 | pub fn rebase(r: *Reader) void { |
| 1171 | if (r.seek == 0) return; | ||
| 1171 | const data = r.buffer[r.seek..r.end]; | 1172 | const data = r.buffer[r.seek..r.end]; |
| 1172 | const dest = r.buffer[0..data.len]; | 1173 | @memmove(r.buffer[0..data.len], data); |
| 1173 | std.mem.copyForwards(u8, dest, data); | ||
| 1174 | r.seek = 0; | 1174 | r.seek = 0; |
| 1175 | r.end = data.len; | 1175 | r.end = data.len; |
| 1176 | } | 1176 | } |
lib/std/net.zig+1-1| ... | @@ -1943,7 +1943,7 @@ pub const Stream = struct { | ... | @@ -1943,7 +1943,7 @@ pub const Stream = struct { |
| 1943 | else => |err| return windows.unexpectedWSAError(err), | 1943 | else => |err| return windows.unexpectedWSAError(err), |
| 1944 | }; | 1944 | }; |
| 1945 | if (n == 0) return error.EndOfStream; | 1945 | if (n == 0) return error.EndOfStream; |
| 1946 | return io_w.advanceVector(n); | 1946 | return n; |
| 1947 | } | 1947 | } |
| 1948 | }, | 1948 | }, |
| 1949 | else => struct { | 1949 | else => struct { |