From: Eric Biggers Date: Sun, 25 Jan 2015 01:36:13 +0000 (-0600) Subject: util.c: Simplify wimlib_aligned_malloc() X-Git-Tag: v1.8.0~56 X-Git-Url: https://wimlib.net/git/?p=wimlib;a=commitdiff_plain;h=b53f64c7034f18da022cdaa646c70f20033940c7 util.c: Simplify wimlib_aligned_malloc() --- diff --git a/src/util.c b/src/util.c index 8d841cc1..11116672 100644 --- a/src/util.c +++ b/src/util.c @@ -112,23 +112,19 @@ wimlib_wcsdup(const wchar_t *str) void * wimlib_aligned_malloc(size_t size, size_t alignment) { - u8 *raw_ptr; - u8 *ptr; - uintptr_t mask; - wimlib_assert(alignment != 0 && is_power_of_2(alignment) && alignment <= 4096); - mask = alignment - 1; - - raw_ptr = MALLOC(size + alignment - 1 + sizeof(size_t)); - if (!raw_ptr) - return NULL; - ptr = (u8 *)raw_ptr + sizeof(size_t); - while ((uintptr_t)ptr & mask) - ptr++; - *((size_t *)ptr - 1) = (ptr - raw_ptr); + const uintptr_t mask = alignment - 1; + char *ptr = NULL; + char *raw_ptr; + raw_ptr = MALLOC(mask + sizeof(size_t) + size); + if (raw_ptr) { + ptr = (char *)raw_ptr + sizeof(size_t); + ptr = (void *)(((uintptr_t)ptr + mask) & ~mask); + *((size_t *)ptr - 1) = ptr - raw_ptr; + } return ptr; } @@ -136,7 +132,7 @@ void wimlib_aligned_free(void *ptr) { if (ptr) - FREE((u8 *)ptr - *((size_t *)ptr - 1)); + FREE((char *)ptr - *((size_t *)ptr - 1)); } void *