aboutsummaryrefslogtreecommitdiff
path: root/core/c
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-09-22 01:17:58 +0100
committergingerBill <bill@gingerbill.org>2022-09-22 01:17:58 +0100
commit07d798c61a3d19c9b3c4ae66c6fa612a4d9de6bb (patch)
tree632d0961daab3f8c375be539377508b2ce997a24 /core/c
parentb426e8577bb04d365a031e198216d12ad99b3e0b (diff)
Fix `libc.aligned_alloc` on Windows
Diffstat (limited to 'core/c')
-rw-r--r--core/c/libc/stdlib.odin13
1 files changed, 13 insertions, 0 deletions
diff --git a/core/c/libc/stdlib.odin b/core/c/libc/stdlib.odin
index a278db0ef..68fb4c4dc 100644
--- a/core/c/libc/stdlib.odin
+++ b/core/c/libc/stdlib.odin
@@ -88,6 +88,7 @@ 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) ---
@@ -125,3 +126,15 @@ foreign libc {
mbstowcs :: proc(pwcs: ^wchar_t, s: cstring, n: size_t) -> size_t ---
wcstombs :: proc(s: [^]char, pwcs: ^wchar_t, n: size_t) -> size_t ---
}
+
+
+aligned_free :: proc "c" (ptr: rawptr) {
+ when ODIN_OS == .Windows {
+ foreign libc {
+ _aligned_free :: proc(ptr: rawptr) ---
+ }
+ _aligned_free(ptr)
+ } else {
+ free(ptr)
+ }
+} \ No newline at end of file