authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-06-30 15:52:13-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-07 22:43:52-07:00
log8f4229158be69685b49f4e1ac446cd3677a2e63f
tree800954e2b6cd43aa495d3382ec242f4fd6adb8f6
parentd03d2731175c5e775dccaef3ef3329f98c4e2c70

std.io.Writer.Allocating: extra ensure byte

So that when returning from drain there is always capacity for at least one more byte.

1 files changed, 4 insertions(+), 1 deletions(-)

lib/std/io/Writer.zig+4-1
......@@ -2158,8 +2158,11 @@ pub const Allocating = struct {
21582158 var list = a.toArrayList();
21592159 defer setArrayList(a, list);
21602160 const start_len = list.items.len;
2161 // Even if we append no data, this function needs to ensure there is more
2162 // capacity in the buffer to avoid infinite loop, hence the +1 in this loop.
2163 assert(data.len != 0);
21612164 for (data) |bytes| {
2162 list.ensureUnusedCapacity(gpa, bytes.len + splat_len) catch return error.WriteFailed;
2165 list.ensureUnusedCapacity(gpa, bytes.len + splat_len + 1) catch return error.WriteFailed;
21632166 list.appendSliceAssumeCapacity(bytes);
21642167 }
21652168 if (splat == 0) {