diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2023-04-06 14:52:50 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2023-06-14 16:08:12 -0400 |
commit | d83553b4a2e942f410d56d92bef34def9424a494 (patch) | |
tree | 52c04b89b19eabc73cec2dd356784499eda613c1 /src/bfstd.c | |
parent | 29719ace5192ff5c2d81c29d1947e32d7889f62b (diff) | |
download | bfs-d83553b4a2e942f410d56d92bef34def9424a494.tar.xz |
bfstd: Add an aligned_alloc()/posix_memalign() wrapper
Diffstat (limited to 'src/bfstd.c')
-rw-r--r-- | src/bfstd.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/bfstd.c b/src/bfstd.c index 37f5276..4e1175f 100644 --- a/src/bfstd.c +++ b/src/bfstd.c @@ -2,6 +2,7 @@ // SPDX-License-Identifier: 0BSD #include "bfstd.h" +#include "bit.h" #include "config.h" #include "diag.h" #include "xregex.h" @@ -142,6 +143,19 @@ char *xgetdelim(FILE *file, char delim) { } } +void *xmemalign(size_t align, size_t size) { + bfs_assert(has_single_bit(align)); + bfs_assert((size & (align - 1)) == 0); + +#if __APPLE__ + void *ptr = NULL; + errno = posix_memalign(&ptr, align, size); + return ptr; +#else + return aligned_alloc(align, size); +#endif +} + /** Compile and execute a regular expression for xrpmatch(). */ static int xrpregex(nl_item item, const char *response) { const char *pattern = nl_langinfo(item); |