Commit b2895f356f

Mateusz Poliwczak <mpoliwczak34@gmail.com>
2025-11-06 07:52:01
std.ArrayList: actaully memset to undefined in shrinkRetainingCapacity and clearRetainingCapacity
See #25810
1 parent e639602
Changed files (1)
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;
         }