From c978afab50320b74173707333ed3e0f111cfaa9c Mon Sep 17 00:00:00 2001 From: IntegratedQuantum Date: Fri, 6 Dec 2024 22:22:25 +0100 Subject: [PATCH] Fix assertion failures with the arena.shrinkAndFree function. --- src/utils.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils.zig b/src/utils.zig index b169497c..032ce755 100644 --- a/src/utils.zig +++ b/src/utils.zig @@ -808,9 +808,9 @@ pub const NeverFailingArenaAllocator = struct { // MARK: NeverFailingArena pub fn shrinkAndFree(self: *NeverFailingArenaAllocator) void { const node = self.arena.state.buffer_list.first orelse return; const allocBuf = @as([*]u8, @ptrCast(node))[0..node.data]; - const dataSize = @sizeOf(std.SinglyLinkedList(usize).Node) + self.arena.state.end_index; - if(self.arena.child_allocator.resize(allocBuf, dataSize)) { - node.data = @sizeOf(std.SinglyLinkedList(usize).Node) + dataSize; + const dataSize = std.mem.alignForward(usize, @sizeOf(std.SinglyLinkedList(usize).Node) + self.arena.state.end_index, @alignOf(std.SinglyLinkedList(usize).Node)); + if(self.arena.child_allocator.rawResize(allocBuf, std.math.log2(@alignOf(std.SinglyLinkedList(usize).Node)), dataSize, @returnAddress())) { + node.data = dataSize; } } };