From b2895f356fa6203d0f3f1476c4e8fb9cf5b6d860 Mon Sep 17 00:00:00 2001 From: Mateusz Poliwczak Date: Thu, 6 Nov 2025 07:52:01 +0100 Subject: [PATCH] std.ArrayList: actaully memset to undefined in shrinkRetainingCapacity and clearRetainingCapacity See #25810 --- lib/std/array_list.zig | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/std/array_list.zig b/lib/std/array_list.zig index 6c728c3998..73abbd4553 100644 --- a/lib/std/array_list.zig +++ b/lib/std/array_list.zig @@ -380,15 +380,15 @@ pub fn AlignedManaged(comptime T: type, comptime alignment: ?mem.Alignment) type /// Asserts that the new length is less than or equal to the previous length. pub fn shrinkRetainingCapacity(self: *Self, new_len: usize) void { assert(new_len <= self.items.len); - self.items.len = new_len; @memset(self.items[new_len..], undefined); + self.items.len = new_len; } /// Reduce length to 0. /// Invalidates all element pointers. pub fn clearRetainingCapacity(self: *Self) void { - self.items.len = 0; @memset(self.items, undefined); + self.items.len = 0; } /// Invalidates all element pointers. @@ -1141,11 +1141,14 @@ pub fn Aligned(comptime T: type, comptime alignment: ?mem.Alignment) type { /// Asserts that the new length is less than or equal to the previous length. pub fn shrinkRetainingCapacity(self: *Self, new_len: usize) void { assert(new_len <= self.items.len); + @memset(self.items[new_len..], undefined); self.items.len = new_len; } + /// Reduce length to 0. /// Invalidates all element pointers. pub fn clearRetainingCapacity(self: *Self) void { + @memset(self.items, undefined); self.items.len = 0; }