diff options
-rw-r--r-- | config/aligned-alloc.c | 8 | ||||
-rw-r--r-- | config/header.mk | 1 | ||||
-rw-r--r-- | src/alloc.c | 6 |
3 files changed, 12 insertions, 3 deletions
diff --git a/config/aligned-alloc.c b/config/aligned-alloc.c new file mode 100644 index 0000000..4460038 --- /dev/null +++ b/config/aligned-alloc.c @@ -0,0 +1,8 @@ +// Copyright © Tavian Barnes <tavianator@tavianator.com> +// SPDX-License-Identifier: 0BSD + +#include <stdlib.h> + +int main(void) { + return !aligned_alloc(_Alignof(void *), sizeof(void *)); +} diff --git a/config/header.mk b/config/header.mk index 06b8f7f..86a4dc5 100644 --- a/config/header.mk +++ b/config/header.mk @@ -10,6 +10,7 @@ include config/exports.mk # All header fragments we generate HEADERS := \ ${GEN}/acl-is-trivial-np.h \ + ${GEN}/aligned-alloc.h \ ${GEN}/confstr.h \ ${GEN}/fdclosedir.h \ ${GEN}/getdents.h \ diff --git a/src/alloc.c b/src/alloc.c index ec8608f..ebaff38 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -24,12 +24,12 @@ static void *xmemalign(size_t align, size_t size) { bfs_assert(align >= sizeof(void *)); bfs_assert(is_aligned(align, size)); -#if __APPLE__ +#if BFS_HAS_ALIGNED_ALLOC + return aligned_alloc(align, size); +#else void *ptr = NULL; errno = posix_memalign(&ptr, align, size); return ptr; -#else - return aligned_alloc(align, size); #endif } |