authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-05-01 17:31:51-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-01 16:35:28-07:00
logf32fc8a84864ea0c6e312e18822d985d5cddf401
tree720b75b389c84736a550f023e115f5acca7b13da
parent2dbf05af0aa140649aba103ad456eca4b3f0b6d3

std.io.Reader.readRemainingArrayList: add minimum_buffer_size

since some reader implementations may require it

1 files changed, 3 insertions(+), 2 deletions(-)

lib/std/io/Reader.zig+3-2
......@@ -186,7 +186,7 @@ pub const LimitedAllocError = Allocator.Error || ShortError || error{StreamTooLo
186186pub fn readRemainingAlloc(r: Reader, gpa: Allocator, limit: Reader.Limit) LimitedAllocError![]u8 {
187187 var buffer: ArrayList(u8) = .empty;
188188 defer buffer.deinit(gpa);
189 try readRemainingArrayList(r, gpa, null, &buffer, limit);
189 try readRemainingArrayList(r, gpa, null, &buffer, limit, 1);
190190 return buffer.toOwnedSlice(gpa);
191191}
192192
......@@ -209,10 +209,11 @@ pub fn readRemainingArrayList(
209209 comptime alignment: ?std.mem.Alignment,
210210 list: *std.ArrayListAlignedUnmanaged(u8, alignment),
211211 limit: Limit,
212 minimum_buffer_size: usize,
212213) LimitedAllocError!void {
213214 var remaining = limit;
214215 while (true) {
215 try list.ensureUnusedCapacity(gpa, 1);
216 try list.ensureUnusedCapacity(gpa, minimum_buffer_size);
216217 const buffer = remaining.slice1(list.unusedCapacitySlice());
217218 const n = r.vtable.readVec(r.context, &.{buffer}) catch |err| switch (err) {
218219 error.EndOfStream => return,