Fix libc.aligned_alloc for Windows (thanks Microsoft(!))

This commit is contained in:
gingerBill
2022-09-22 01:22:48 +01:00
parent 07d798c61a
commit eb0d7465e2

View File

@@ -88,8 +88,6 @@ foreign libc {
srand :: proc(seed: uint) ---
// 7.22.3 Memory management functions
@(link_name="_aligned_malloc" when ODIN_OS == .Windows else "aligned_alloc")
aligned_alloc :: proc(aligment, size: size_t) -> rawptr ---
calloc :: proc(nmemb, size: size_t) -> rawptr ---
free :: proc(ptr: rawptr) ---
malloc :: proc(size: size_t) -> rawptr ---
@@ -128,7 +126,22 @@ foreign libc {
}
aligned_free :: proc "c" (ptr: rawptr) {
aligned_alloc :: #force_inline proc "c" (alignment, size: size_t) -> rawptr {
when ODIN_OS == .Windows {
foreign libc {
_aligned_malloc :: proc(size, alignment: size_t) -> rawptr ---
}
return _aligned_malloc(size=size, alignment=alignment)
} else {
foreign libc {
aligned_alloc :: proc(alignment, size: size_t) -> rawptr ---
}
return aligned_alloc(alignment=alignment, size=size)
}
}
aligned_free :: #force_inline proc "c" (ptr: rawptr) {
when ODIN_OS == .Windows {
foreign libc {
_aligned_free :: proc(ptr: rawptr) ---