Browse Source

Fix `libc.aligned_alloc` on Windows

gingerBill 2 years ago
parent
commit
07d798c61a
1 changed files with 13 additions and 0 deletions
  1. 13 0
      core/c/libc/stdlib.odin

+ 13 - 0
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)
+	}
+}