|
@@ -206,11 +206,19 @@ heap_allocator_proc :: proc(allocator_data: rawptr, mode: mem.Allocator_Mode,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- aligned_resize :: proc(p: rawptr, old_size: int, new_size: int, new_alignment: int) -> ([]byte, mem.Allocator_Error) {
|
|
|
|
|
|
+ aligned_resize :: proc(p: rawptr, old_size: int, new_size: int, new_alignment: int) -> (new_memory: []byte, err: mem.Allocator_Error) {
|
|
if p == nil {
|
|
if p == nil {
|
|
return nil, nil
|
|
return nil, nil
|
|
}
|
|
}
|
|
- return aligned_alloc(new_size, new_alignment, p)
|
|
|
|
|
|
+
|
|
|
|
+ new_memory = aligned_alloc(new_size, new_alignment, p) or_return
|
|
|
|
+
|
|
|
|
+ // NOTE: heap_resize does not zero the new memory, so we do it
|
|
|
|
+ if new_size > old_size {
|
|
|
|
+ new_region := mem.raw_data(new_memory[old_size:])
|
|
|
|
+ mem.zero(new_region, new_size - old_size)
|
|
|
|
+ }
|
|
|
|
+ return
|
|
}
|
|
}
|
|
|
|
|
|
switch mode {
|
|
switch mode {
|