aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/memory_allocator.zig2
-rw-r--r--src/mimalloc_arena.zig8
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(