aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libar2simplified_init_context.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libar2simplified_init_context.c b/libar2simplified_init_context.c
index 6a5cb88..814e182 100644
--- a/libar2simplified_init_context.c
+++ b/libar2simplified_init_context.c
@@ -51,8 +51,9 @@ alignedalloc(size_t num, size_t size, size_t extra, size_t alignment)
static void *
allocate(size_t num, size_t size, size_t alignment, struct libar2_context *ctx)
{
- size_t pad = (alignment - ((2 * sizeof(size_t)) & (alignment - 1))) & (alignment - 1);
- char *ptr = alignedalloc(num, size, pad + 2 * sizeof(size_t), alignment);
+ size_t extra = 2 * sizeof(size_t);
+ size_t pad = -extra & (alignment - 1);
+ char *ptr = alignedalloc(num, size, pad + extra, alignment);
if (ptr) {
ptr += pad;
memcpy(ptr, &pad, sizeof(size_t));