From 0d8bf80364a23d9b90ab6c034625b60e4c566c61 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 19 Apr 2024 14:58:38 -0400 Subject: config: Check for aligned_alloc() --- config/aligned-alloc.c | 8 ++++++++ config/header.mk | 1 + src/alloc.c | 6 +++--- 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 config/aligned-alloc.c 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 +// SPDX-License-Identifier: 0BSD + +#include + +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 } -- cgit v1.2.3