|
@@ -379,10 +379,10 @@ GB_ALLOCATOR_PROC(heap_allocator_proc) {
|
|
break;
|
|
break;
|
|
#else
|
|
#else
|
|
// TODO(bill): *nix version that's decent
|
|
// TODO(bill): *nix version that's decent
|
|
- case gbAllocation_Alloc:
|
|
|
|
- posix_memalign(&ptr, alignment, size);
|
|
|
|
|
|
+ case gbAllocation_Alloc: {
|
|
|
|
+ int err = posix_memalign(&ptr, alignment, size);
|
|
gb_zero_size(ptr, size);
|
|
gb_zero_size(ptr, size);
|
|
- break;
|
|
|
|
|
|
+ } break;
|
|
|
|
|
|
case gbAllocation_Free:
|
|
case gbAllocation_Free:
|
|
if (old_memory != nullptr) {
|
|
if (old_memory != nullptr) {
|
|
@@ -390,13 +390,16 @@ GB_ALLOCATOR_PROC(heap_allocator_proc) {
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
|
|
- case gbAllocation_Resize:
|
|
|
|
|
|
+ case gbAllocation_Resize: {
|
|
|
|
+ int err = 0;
|
|
if (size == 0) {
|
|
if (size == 0) {
|
|
free(old_memory);
|
|
free(old_memory);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
if (old_memory == nullptr) {
|
|
if (old_memory == nullptr) {
|
|
- posix_memalign(&ptr, alignment, size);
|
|
|
|
|
|
+ err = posix_memalign(&ptr, alignment, size);
|
|
|
|
+ GB_ASSERT_MSG(err == 0, "posix_memalign err: %d", err);
|
|
|
|
+ GB_ASSERT(ptr != nullptr);
|
|
gb_zero_size(ptr, size);
|
|
gb_zero_size(ptr, size);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -405,10 +408,14 @@ GB_ALLOCATOR_PROC(heap_allocator_proc) {
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
- posix_memalign(&ptr, alignment, size);
|
|
|
|
|
|
+ err = posix_memalign(&ptr, alignment, size);
|
|
|
|
+ GB_ASSERT_MSG(err == 0, "posix_memalign err: %d", err);
|
|
|
|
+ GB_ASSERT(ptr != nullptr);
|
|
gb_memmove(ptr, old_memory, old_size);
|
|
gb_memmove(ptr, old_memory, old_size);
|
|
- gb_zero_size(cast(u8 *)ptr + old_size, gb_max(size-old_size, 0));
|
|
|
|
- break;
|
|
|
|
|
|
+ free(old_memory);
|
|
|
|
+ isize n = gb_max(size-old_size, 0);
|
|
|
|
+ gb_zero_size(cast(u8 *)ptr + old_size, n);
|
|
|
|
+ } break;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
case gbAllocation_FreeAll:
|
|
case gbAllocation_FreeAll:
|