mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-01 20:28:15 +00:00
Merge pull request #1376 from jasonKercher/master
Added zeroing to new memory regions from _unix_realloc
This commit is contained in:
+10
-2
@@ -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 {
|
||||||
|
|||||||
@@ -553,6 +553,8 @@ heap_alloc :: proc(size: int) -> rawptr {
|
|||||||
return _unix_calloc(1, size)
|
return _unix_calloc(1, size)
|
||||||
}
|
}
|
||||||
heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
||||||
|
// NOTE: _unix_realloc doesn't guarantee new memory will be zeroed on
|
||||||
|
// POSIX platforms. Ensure your caller takes this into account.
|
||||||
return _unix_realloc(ptr, new_size)
|
return _unix_realloc(ptr, new_size)
|
||||||
}
|
}
|
||||||
heap_free :: proc(ptr: rawptr) {
|
heap_free :: proc(ptr: rawptr) {
|
||||||
|
|||||||
@@ -378,6 +378,8 @@ heap_alloc :: proc(size: int) -> rawptr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
||||||
|
// NOTE: _unix_realloc doesn't guarantee new memory will be zeroed on
|
||||||
|
// POSIX platforms. Ensure your caller takes this into account.
|
||||||
return _unix_realloc(ptr, c.size_t(new_size));
|
return _unix_realloc(ptr, c.size_t(new_size));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -727,6 +727,8 @@ heap_alloc :: proc(size: int) -> rawptr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr {
|
||||||
|
// NOTE: _unix_realloc doesn't guarantee new memory will be zeroed on
|
||||||
|
// POSIX platforms. Ensure your caller takes this into account.
|
||||||
return _unix_realloc(ptr, c.size_t(new_size))
|
return _unix_realloc(ptr, c.size_t(new_size))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user