mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-23 23:05:18 +00:00
Add some minor sanity checks to the compiler's heap_allocator_proc on Darwin
This commit is contained in:
@@ -379,10 +379,10 @@ GB_ALLOCATOR_PROC(heap_allocator_proc) {
|
||||
break;
|
||||
#else
|
||||
// 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);
|
||||
break;
|
||||
} break;
|
||||
|
||||
case gbAllocation_Free:
|
||||
if (old_memory != nullptr) {
|
||||
@@ -390,13 +390,16 @@ GB_ALLOCATOR_PROC(heap_allocator_proc) {
|
||||
}
|
||||
break;
|
||||
|
||||
case gbAllocation_Resize:
|
||||
case gbAllocation_Resize: {
|
||||
int err = 0;
|
||||
if (size == 0) {
|
||||
free(old_memory);
|
||||
break;
|
||||
}
|
||||
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);
|
||||
break;
|
||||
}
|
||||
@@ -405,10 +408,14 @@ GB_ALLOCATOR_PROC(heap_allocator_proc) {
|
||||
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_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
|
||||
|
||||
case gbAllocation_FreeAll:
|
||||
|
||||
12
src/gb/gb.h
12
src/gb/gb.h
@@ -3123,18 +3123,22 @@ gb_inline void *gb_memset(void *dest, u8 c, isize n) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (n == 0)
|
||||
if (n <= 0) {
|
||||
return dest;
|
||||
}
|
||||
s[0] = s[n-1] = c;
|
||||
if (n < 3)
|
||||
if (n < 3) {
|
||||
return dest;
|
||||
}
|
||||
s[1] = s[n-2] = c;
|
||||
s[2] = s[n-3] = c;
|
||||
if (n < 7)
|
||||
if (n < 7) {
|
||||
return dest;
|
||||
}
|
||||
s[3] = s[n-4] = c;
|
||||
if (n < 9)
|
||||
if (n < 9) {
|
||||
return dest;
|
||||
}
|
||||
|
||||
k = -cast(intptr)s & 3;
|
||||
s += k;
|
||||
|
||||
Reference in New Issue
Block a user