diff options
-rw-r--r-- | libdislocator/libdislocator.so.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/libdislocator/libdislocator.so.c b/libdislocator/libdislocator.so.c index 5246af40..b3a90366 100644 --- a/libdislocator/libdislocator.so.c +++ b/libdislocator/libdislocator.so.c @@ -269,13 +269,11 @@ void* realloc(void* ptr, size_t len) { a normal request */ int posix_memalign(void** ptr, size_t align, size_t len) { - if (!ptr) FATAL("null pointer on posix_memalign()"); - if ((align % 2) || (align % sizeof(void *))) FATAL("bad alignment on posix_memalign()"); - if (align >= 4 * sizeof(size_t)) { - - len += align -1; - - } + if ((char*)ptr == NULL || *ptr == NULL) + return -1; // why would we do: FATAL("null pointer on posix_memalign()"); + if ((align % 2) || (align % sizeof(void *))) + return -1; // why would we do: FATAL("bad alignment on posix_memalign()"); + if (align >= 4 * sizeof(size_t)) len += align -1; *ptr = malloc(len); |