Something went wrong. Try again.
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768const std = @import("std");const testing = std.testing;const lib = @import("../lib.zig");const CAllocator = lib.alloc.Allocator;
/// Allocate a buffer of `len` bytes using the given allocator/// (or the default allocator if NULL).////// Returns a pointer to the allocated buffer, or NULL if the/// allocation failed.pub fn alloc( alloc_: ?*const CAllocator, len: usize,) callconv(lib.calling_conv) ?[*]u8 { const allocator = lib.alloc.default(alloc_); const buf = allocator.alloc(u8, len) catch return null; return buf.ptr;}
/// Free memory that was allocated by a libghostty-vt function.////// This must be used to free buffers returned by functions like/// `format_alloc`. Pass the same allocator (or NULL for the default)/// that was used for the allocation.pub fn free( alloc_: ?*const CAllocator, ptr: ?[*]u8, len: usize,) callconv(lib.calling_conv) void { const mem = ptr orelse return; const allocator = lib.alloc.default(alloc_); allocator.free(mem[0..len]);}
test "alloc returns non-null" { const ptr = alloc(&lib.alloc.test_allocator, 16); try testing.expect(ptr != null); free(&lib.alloc.test_allocator, ptr, 16);}
test "alloc with null allocator" { const ptr = alloc(null, 8); try testing.expect(ptr != null); free(null, ptr, 8);}
test "alloc zero length" { const ptr = alloc(&lib.alloc.test_allocator, 0); defer free(&lib.alloc.test_allocator, ptr, 0);}
test "free null pointer" { free(&lib.alloc.test_allocator, null, 0);}
test "free allocated memory" { const allocator = lib.alloc.default(&lib.alloc.test_allocator); const mem = try allocator.alloc(u8, 16); free(&lib.alloc.test_allocator, mem.ptr, mem.len);}
test "free with null allocator" { // null allocator falls back to the default (test allocator in tests) const allocator = lib.alloc.default(null); const mem = try allocator.alloc(u8, 8); free(null, mem.ptr, mem.len);}