From 6d861ac87491a207e4599c44b61d142f0a601c2d Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 4 Jul 2013 23:58:16 -0400 Subject: move core memalign code from aligned_alloc to __memalign there are two motivations for this change. one is to avoid gratuitously depending on a C11 symbol for implementing a POSIX function. the other pertains to the documented semantics. C11 does not define any behavior for aligned_alloc when the length argument is not a multiple of the alignment argument. posix_memalign on the other hand places no requirements on the length argument. using __memalign as the implementation of both, rather than trying to implement one in terms of the other when their documented contracts differ, eliminates this confusion. --- src/malloc/posix_memalign.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/malloc/posix_memalign.c') diff --git a/src/malloc/posix_memalign.c b/src/malloc/posix_memalign.c index ad4d8f47..cf67db63 100644 --- a/src/malloc/posix_memalign.c +++ b/src/malloc/posix_memalign.c @@ -1,10 +1,12 @@ #include #include +void *__memalign(size_t, size_t); + int posix_memalign(void **res, size_t align, size_t len) { if (align < sizeof(void *)) return EINVAL; - void *mem = aligned_alloc(align, len); + void *mem = __memalign(align, len); if (!mem) return errno; *res = mem; return 0; -- cgit v1.2.1