authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-02-05 13:21:15-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-02-06 14:23:23-08:00
logc8e807c44ed8c96b31a6cbe0b7f5f01a02ced270
tree3801acd6c825e13a1ec8072cc87774fede5dbf3d
parentb14a350430aef737250b92520fa805201decf4d5

std.heap.GeneralPurposeAllocator: use for loops in leak check


1 files changed, 3 insertions(+), 6 deletions(-)

lib/std/heap/general_purpose_allocator.zig+3-6
...@@ -412,12 +412,11 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {...@@ -412,12 +412,11 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
412 const size_class = @as(usize, 1) << @as(Log2USize, @intCast(size_class_index));412 const size_class = @as(usize, 1) << @as(Log2USize, @intCast(size_class_index));
413 const slot_count = slot_counts[size_class_index];413 const slot_count = slot_counts[size_class_index];
414 var leaks = false;414 var leaks = false;
415 var used_bits_byte: usize = 0;415 for (0..used_bits_count) |used_bits_byte| {
416 while (used_bits_byte < used_bits_count) : (used_bits_byte += 1) {
417 const used_byte = bucket.usedBits(used_bits_byte).*;416 const used_byte = bucket.usedBits(used_bits_byte).*;
418 if (used_byte != 0) {417 if (used_byte != 0) {
419 var bit_index: u3 = 0;418 for (0..8) |bit_index_usize| {
420 while (true) : (bit_index += 1) {419 const bit_index: u3 = @intCast(bit_index_usize);
421 const is_used = @as(u1, @truncate(used_byte >> bit_index)) != 0;420 const is_used = @as(u1, @truncate(used_byte >> bit_index)) != 0;
422 if (is_used) {421 if (is_used) {
423 const slot_index: SlotIndex = @intCast(used_bits_byte * 8 + bit_index);422 const slot_index: SlotIndex = @intCast(used_bits_byte * 8 + bit_index);
...@@ -427,8 +426,6 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {...@@ -427,8 +426,6 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
427 log.err("memory address 0x{x} leaked: {}", .{ addr, stack_trace });426 log.err("memory address 0x{x} leaked: {}", .{ addr, stack_trace });
428 leaks = true;427 leaks = true;
429 }428 }
430 if (bit_index == math.maxInt(u3))
431 break;
432 }429 }
433 }430 }
434 }431 }