diff options
-rw-r--r-- | src/memory_allocator.zig | 2 | ||||
-rw-r--r-- | src/mimalloc_arena.zig | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/memory_allocator.zig b/src/memory_allocator.zig index a4f79cd16..2e21bbfa1 100644 --- a/src/memory_allocator.zig +++ b/src/memory_allocator.zig @@ -147,7 +147,7 @@ const ZAllocator = struct { else mimalloc.mi_zalloc_aligned(len, alignment); - return @ptrCast([*]u8, ptr orelse null); + return @ptrCast([*]u8, ptr orelse return null); } fn alignedAllocSize(ptr: [*]u8) usize { diff --git a/src/mimalloc_arena.zig b/src/mimalloc_arena.zig index 76fd56000..5ce127cb4 100644 --- a/src/mimalloc_arena.zig +++ b/src/mimalloc_arena.zig @@ -163,10 +163,12 @@ pub const Arena = struct { fn alignedAlloc(heap: *mimalloc.Heap, len: usize, alignment: usize) ?[*]u8 { if (comptime FeatureFlags.log_allocations) std.debug.print("Malloc: {d}\n", .{len}); - // this is the logic that posix_memalign does - var ptr = mimalloc.mi_heap_malloc_aligned(heap, len, alignment); + var ptr = if (mi_malloc_satisfies_alignment(alignment, len)) + mimalloc.mi_heap_malloc(heap, len) + else + mimalloc.mi_heap_malloc_aligned(heap, len, alignment); - return @ptrCast([*]u8, ptr orelse null); + return @ptrCast([*]u8, ptr orelse return null); } pub fn alloc( |