From d00b86aa517873ba8b590e3c0473901219f3b07d Mon Sep 17 00:00:00 2001
From: Marcus Comstedt <marcus@mc.pp.se>
Date: Wed, 14 Aug 2013 11:17:04 +0200
Subject: [PATCH] pike_memory: Use regular memalign if posix_memalign is
 unavailable

---
 src/configure.in  | 1 +
 src/pike_memory.c | 8 ++++++++
 2 files changed, 9 insertions(+)

diff --git a/src/configure.in b/src/configure.in
index f07a8b299c..a7ed62c5c6 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -4666,6 +4666,7 @@ AC_CHECK_FUNCS( \
  SetErrorMode \
  thread_info \
  host_get_clock_service \
+ posix_memalign \
 )
 
 # SunOS 4 realloc() returns NULL when reallocing NULL.
diff --git a/src/pike_memory.c b/src/pike_memory.c
index a6f1250619..2a250eef86 100644
--- a/src/pike_memory.c
+++ b/src/pike_memory.c
@@ -539,9 +539,17 @@ PMOD_EXPORT void *debug_xcalloc(size_t n, size_t s)
 PMOD_EXPORT void *aligned_alloc(size_t size, size_t alignment) {
     void * ret;
 
+    if (!size) return 0;
+
+#ifdef HAVE_POSIX_MEMALIGN
     if (posix_memalign(&ret, alignment, size)) {
 	Pike_error(msg_out_of_mem_2, size);
     }
+#else
+    if ((ret = memalign(alignment, size)) == NULL) {
+	Pike_error(msg_out_of_mem_2, size);
+    }
+#endif
 
     return ret;
 }
-- 
GitLab