| ... | ... | @@ -180,9 +180,15 @@ pub fn MultiArrayList(comptime S: type) type { |
| 180 | 180 | capacityInBytes(new_len), |
| 181 | 181 | .exact, |
| 182 | 182 | ) catch { |
| 183 | const self_slice = self.slice(); |
| 183 | 184 | inline for (fields) |field_info, i| { |
| 184 | 185 | const field = @intToEnum(Field, i); |
| 185 | | mem.set(field_info.field_type, self.slice().items(field)[new_len..], undefined); |
| 186 | const dest_slice = self_slice.items(field)[new_len..]; |
| 187 | const byte_count = dest_slice.len * @sizeOf(field_info.field_type); |
| 188 | // We use memset here for more efficient codegen in safety-checked, |
| 189 | // valgrind-enabled builds. Otherwise the valgrind client request |
| 190 | // will be repeated for every element. |
| 191 | @memset(@ptrCast([*]u8, dest_slice.ptr), undefined, byte_count); |
| 186 | 192 | } |
| 187 | 193 | self.len = new_len; |
| 188 | 194 | return; |