| ... | @@ -433,8 +433,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type { | ... | @@ -433,8 +433,7 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type { |
| 433 | const bucket_slice = @ptrCast([*]align(@alignOf(BucketHeader)) u8, bucket)[0..bucket_size]; | 433 | const bucket_slice = @ptrCast([*]align(@alignOf(BucketHeader)) u8, bucket)[0..bucket_size]; |
| 434 | self.backing_allocator.free(bucket_slice); | 434 | self.backing_allocator.free(bucket_slice); |
| 435 | } else { | 435 | } else { |
| 436 | // TODO Set the slot data to undefined. | 436 | @memset(bucket.page + slot_index * size_class, undefined, size_class); |
| 437 | // Related: https://github.com/ziglang/zig/issues/4298 | | |
| 438 | } | 437 | } |
| 439 | } | 438 | } |
| 440 | | 439 | |
| ... | @@ -567,6 +566,9 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type { | ... | @@ -567,6 +566,9 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type { |
| 567 | const new_aligned_size = math.max(new_size, old_align); | 566 | const new_aligned_size = math.max(new_size, old_align); |
| 568 | const new_size_class = math.ceilPowerOfTwoAssert(usize, new_aligned_size); | 567 | const new_size_class = math.ceilPowerOfTwoAssert(usize, new_aligned_size); |
| 569 | if (new_size_class <= size_class) { | 568 | if (new_size_class <= size_class) { |
| | 569 | if (old_mem.len > new_size) { |
| | 570 | @memset(old_mem.ptr + new_size, undefined, old_mem.len - new_size); |
| | 571 | } |
| 570 | return new_size; | 572 | return new_size; |
| 571 | } | 573 | } |
| 572 | return error.OutOfMemory; | 574 | return error.OutOfMemory; |