From d146984a910d71eebc2610ae9be0f4774f75357b Mon Sep 17 00:00:00 2001 From: Julian Fang Date: Thu, 27 Jun 2019 16:18:50 +0800 Subject: [PATCH] Return EINVAL when alignment is not a power of 2 to match posix standard --- src/alloc-override.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/alloc-override.c b/src/alloc-override.c index e06a3e6e..6735fbe0 100644 --- a/src/alloc-override.c +++ b/src/alloc-override.c @@ -135,7 +135,7 @@ int posix_memalign(void** p, size_t alignment, size_t size) { // TODO: the spec says we should return EINVAL also if alignment is not a power of 2. // The spec also dictates we should not modify `*p` on an error. (issue#27) // - if (alignment % sizeof(void*) != 0) return EINVAL; // no `p==NULL` check as it is declared as non-null + if ((alignment % sizeof(void*))||(alignment % 2) != 0) return EINVAL; // no `p==NULL` check as it is declared as non-null void* q = mi_malloc_aligned(size, alignment); if (q==NULL && size != 0) return ENOMEM; *p = q;