mirror of
https://github.com/ziglang/zig.git
synced 2025-12-28 00:53:18 +00:00
Merge pull request #587 from scurest/c_alloc_redeclaration_of_mem
Fix #585
This commit is contained in:
commit
52a2992862
16
std/heap.zig
16
std/heap.zig
@ -17,8 +17,8 @@ pub var c_allocator = Allocator {
|
||||
};
|
||||
|
||||
fn cAlloc(self: &Allocator, n: usize, alignment: usize) -> %[]u8 {
|
||||
if (c.malloc(usize(n))) |mem| {
|
||||
@ptrCast(&u8, mem)[0..n]
|
||||
if (c.malloc(usize(n))) |buf| {
|
||||
@ptrCast(&u8, buf)[0..n]
|
||||
} else {
|
||||
error.OutOfMemory
|
||||
}
|
||||
@ -29,8 +29,8 @@ fn cRealloc(self: &Allocator, old_mem: []u8, new_size: usize, alignment: usize)
|
||||
old_mem[0..new_size]
|
||||
} else {
|
||||
const old_ptr = @ptrCast(&c_void, old_mem.ptr);
|
||||
if (c.realloc(old_ptr, usize(new_size))) |mem| {
|
||||
@ptrCast(&u8, mem)[0..new_size]
|
||||
if (c.realloc(old_ptr, usize(new_size))) |buf| {
|
||||
@ptrCast(&u8, buf)[0..new_size]
|
||||
} else {
|
||||
error.OutOfMemory
|
||||
}
|
||||
@ -136,6 +136,14 @@ pub const IncrementingAllocator = struct {
|
||||
}
|
||||
};
|
||||
|
||||
test "c_allocator" {
|
||||
if (builtin.link_libc) {
|
||||
var slice = c_allocator.alloc(u8, 50) %% return;
|
||||
defer c_allocator.free(slice);
|
||||
slice = c_allocator.realloc(u8, slice, 100) %% return;
|
||||
}
|
||||
}
|
||||
|
||||
test "IncrementingAllocator" {
|
||||
const total_bytes = 100 * 1024 * 1024;
|
||||
var inc_allocator = %%IncrementingAllocator.init(total_bytes);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user