summaryrefslogtreecommitdiffstats
path: root/contrib/restricted/emscripten/system/lib/libc/compat/aligned_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/restricted/emscripten/system/lib/libc/compat/aligned_alloc.c')
-rw-r--r--contrib/restricted/emscripten/system/lib/libc/compat/aligned_alloc.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/contrib/restricted/emscripten/system/lib/libc/compat/aligned_alloc.c b/contrib/restricted/emscripten/system/lib/libc/compat/aligned_alloc.c
new file mode 100644
index 00000000000..0941e5ddf00
--- /dev/null
+++ b/contrib/restricted/emscripten/system/lib/libc/compat/aligned_alloc.c
@@ -0,0 +1,12 @@
+#include <stdlib.h>
+
+// Musl has an aligned_alloc routine, but that builds on top of standard malloc(). We are using dlmalloc, so
+// can route to its implementation instead.
+void * weak aligned_alloc(size_t alignment, size_t size)
+{
+ void *ptr;
+ if ((alignment % sizeof(void *) != 0) || (size % alignment) != 0)
+ return 0;
+ int ret = posix_memalign(&ptr, alignment, size);
+ return (ret == 0) ? ptr : 0;
+}