Commit 9d7082972e

Andrew Kelley <andrew@ziglang.org>
2024-02-25 02:21:08
std.heap.raw_c_allocator: use malloc_size for resize
std.heap.c_allocator was already doing this, however, std.heap.raw_c_allocator, which asserts no allocations more than 16 bytes aligned, was not. The zig compiler uses std.heap.raw_c_allocator, so it is affected by this.
1 parent f6af773
Changed files (1)
lib
lib/std/heap.zig
@@ -196,7 +196,16 @@ fn rawCResize(
 ) bool {
     _ = log2_old_align;
     _ = ret_addr;
-    return new_len <= buf.len;
+
+    if (new_len <= buf.len)
+        return true;
+
+    if (CAllocator.supports_malloc_size) {
+        const full_len = CAllocator.malloc_size(buf.ptr);
+        if (new_len <= full_len) return true;
+    }
+
+    return false;
 }
 
 fn rawCFree(