aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Io/Reader.zig
diff options
context:
space:
mode:
authorRyan Liptak <squeek502@hotmail.com>2025-08-28 00:26:57 -0700
committerAndrew Kelley <andrew@ziglang.org>2025-08-28 07:56:50 -0700
commit2b73c28cec9a5c75ab064f1ebd88b12aa64d22dd (patch)
tree75d9a6f12c9349068068246a153537425d318988 /lib/std/Io/Reader.zig
parent73a0b5441be3dc6adb666ca672f3c4f7972cf73e (diff)
downloadzig-2b73c28cec9a5c75ab064f1ebd88b12aa64d22dd.tar.gz
zig-2b73c28cec9a5c75ab064f1ebd88b12aa64d22dd.zip
Reader.appendRemaining: Take ownership of the full allocated slice
Before this commit, calling appendRemaining with an ArrayList where list.items.len != list.capacity could result in illegal behavior if the Writer.Allocating resized the list during the appendRemaining call. Fixes #25057
Diffstat (limited to 'lib/std/Io/Reader.zig')
-rw-r--r--lib/std/Io/Reader.zig4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/std/Io/Reader.zig b/lib/std/Io/Reader.zig
index 5e08ad6d0c..f6cb22cb4b 100644
--- a/lib/std/Io/Reader.zig
+++ b/lib/std/Io/Reader.zig
@@ -308,7 +308,7 @@ pub fn appendRemaining(
list: *ArrayList(u8),
limit: Limit,
) LimitedAllocError!void {
- var a: std.Io.Writer.Allocating = .initOwnedSlice(gpa, list.items);
+ var a: std.Io.Writer.Allocating = .initOwnedSlice(gpa, list.allocatedSlice());
a.writer.end = list.items.len;
list.* = .empty;
defer {
@@ -332,7 +332,7 @@ pub fn appendRemaining(
pub const UnlimitedAllocError = Allocator.Error || ShortError;
pub fn appendRemainingUnlimited(r: *Reader, gpa: Allocator, list: *ArrayList(u8)) UnlimitedAllocError!void {
- var a: std.Io.Writer.Allocating = .initOwnedSlice(gpa, list.items);
+ var a: std.Io.Writer.Allocating = .initOwnedSlice(gpa, list.allocatedSlice());
a.writer.end = list.items.len;
list.* = .empty;
defer {