diff options
-rw-r--r-- | src/memory_allocator.zig | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/memory_allocator.zig b/src/memory_allocator.zig index 167dd4fc7..c7e42ae87 100644 --- a/src/memory_allocator.zig +++ b/src/memory_allocator.zig @@ -97,11 +97,22 @@ const CAllocator = struct { assert(len > 0); assert(std.math.isPowerOfTwo(alignment)); - var ptr = alignedAlloc(len, alignment) orelse return error.OutOfMemory; + var ptr = alignedAlloc( + len, + alignment, + ) orelse return error.OutOfMemory; if (len_align == 0) { return ptr[0..len]; } - return ptr[0..mem.alignBackwardAnyAlign(mimalloc.mi_usable_size(ptr), len_align)]; + + if (comptime Environment.allow_assert) { + const size = mem.alignBackwardAnyAlign(mimalloc.mi_usable_size(ptr), len_align); + + assert(size >= len); + return ptr[0..size]; + } else { + return ptr[0..mem.alignBackwardAnyAlign(mimalloc.mi_usable_size(ptr), len_align)]; + } } fn resize( |