From 8a57e09b158cc2e93b4122505637244feeaa1a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hampus=20Fr=C3=B6jdholm?= Date: Sun, 19 May 2024 23:41:04 +0200 Subject: [PATCH] gpa: Fix GeneralPurposeAllocator crash when deallocating metadata --- lib/std/heap/general_purpose_allocator.zig | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/std/heap/general_purpose_allocator.zig b/lib/std/heap/general_purpose_allocator.zig index 9f82e03529..add7aeb1b8 100644 --- a/lib/std/heap/general_purpose_allocator.zig +++ b/lib/std/heap/general_purpose_allocator.zig @@ -445,8 +445,11 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type { } } // free retained metadata for small allocations - var empty_it = self.empty_buckets.inorderIterator(); - while (empty_it.next()) |node| { + while (self.empty_buckets.getMin()) |node| { + // remove the node from the tree before destroying it + var entry = self.empty_buckets.getEntryForExisting(node); + entry.set(null); + var bucket = node.key; if (config.never_unmap) { // free page that was intentionally leaked by never_unmap