From b5bcbf2a62aa513022fdb12df75699308f87b7bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 20 Feb 2026 22:14:35 +0100 Subject: [PATCH] std.heap.DebugAllocator: make BucketHeader.fromPage() use wrapping arithmetic If we've allocated the very last page in the address space then these operations will overflow and underflow respectively - which is fine. --- lib/std/heap/debug_allocator.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/heap/debug_allocator.zig b/lib/std/heap/debug_allocator.zig index d150bb09279c48da6f2c48ba6cee97a54bb07c9e..d6f2bf179653582d1d0d02faa1236e38e7fa5ab0 100644 --- a/lib/std/heap/debug_allocator.zig +++ b/lib/std/heap/debug_allocator.zig @@ -266,7 +266,7 @@ pub fn DebugAllocator(comptime config: Config) type { canary: usize = config.canary, fn fromPage(page_addr: usize, slot_count: usize) *BucketHeader { - const unaligned = page_addr + page_size - bucketSize(slot_count); + const unaligned = page_addr +% page_size -% bucketSize(slot_count); return @ptrFromInt(unaligned & ~(@as(usize, @alignOf(BucketHeader)) - 1)); } -- 2.54.0