authorgravatar for mpoliwczak34@gmail.comMateusz Poliwczak <mpoliwczak34@gmail.com> 2025-11-06 07:52:01+01:00
committergravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2025-11-06 05:30:41-08:00
logb2895f356fa6203d0f3f1476c4e8fb9cf5b6d860
treeddb7b67672c67eef02ee7f482ac0291382ea780a
parente6396025696abdce5ac9d6d683954df8dc7fdae6

std.ArrayList: actaully memset to undefined in shrinkRetainingCapacity and clearRetainingCapacity

See #25810

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

lib/std/array_list.zig+5-2
...@@ -380,15 +380,15 @@ pub fn AlignedManaged(comptime T: type, comptime alignment: ?mem.Alignment) type...@@ -380,15 +380,15 @@ pub fn AlignedManaged(comptime T: type, comptime alignment: ?mem.Alignment) type
380 /// Asserts that the new length is less than or equal to the previous length.380 /// Asserts that the new length is less than or equal to the previous length.
381 pub fn shrinkRetainingCapacity(self: *Self, new_len: usize) void {381 pub fn shrinkRetainingCapacity(self: *Self, new_len: usize) void {
382 assert(new_len <= self.items.len);382 assert(new_len <= self.items.len);
383 self.items.len = new_len;
384 @memset(self.items[new_len..], undefined);383 @memset(self.items[new_len..], undefined);
384 self.items.len = new_len;
385 }385 }
386386
387 /// Reduce length to 0.387 /// Reduce length to 0.
388 /// Invalidates all element pointers.388 /// Invalidates all element pointers.
389 pub fn clearRetainingCapacity(self: *Self) void {389 pub fn clearRetainingCapacity(self: *Self) void {
390 self.items.len = 0;
391 @memset(self.items, undefined);390 @memset(self.items, undefined);
391 self.items.len = 0;
392 }392 }
393393
394 /// Invalidates all element pointers.394 /// Invalidates all element pointers.
...@@ -1141,11 +1141,14 @@ pub fn Aligned(comptime T: type, comptime alignment: ?mem.Alignment) type {...@@ -1141,11 +1141,14 @@ pub fn Aligned(comptime T: type, comptime alignment: ?mem.Alignment) type {
1141 /// Asserts that the new length is less than or equal to the previous length.1141 /// Asserts that the new length is less than or equal to the previous length.
1142 pub fn shrinkRetainingCapacity(self: *Self, new_len: usize) void {1142 pub fn shrinkRetainingCapacity(self: *Self, new_len: usize) void {
1143 assert(new_len <= self.items.len);1143 assert(new_len <= self.items.len);
1144 @memset(self.items[new_len..], undefined);
1144 self.items.len = new_len;1145 self.items.len = new_len;
1145 }1146 }
11461147
1148 /// Reduce length to 0.
1147 /// Invalidates all element pointers.1149 /// Invalidates all element pointers.
1148 pub fn clearRetainingCapacity(self: *Self) void {1150 pub fn clearRetainingCapacity(self: *Self) void {
1151 @memset(self.items, undefined);
1149 self.items.len = 0;1152 self.items.len = 0;
1150 }1153 }
11511154