about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/custommem.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/custommem.c b/src/custommem.c
index 71e35a74..ee6a942e 100644
--- a/src/custommem.c
+++ b/src/custommem.c
@@ -635,7 +635,8 @@ void internal_print_block(int i)
 
 void* internal_customMemAligned(size_t align, size_t size, int is32bits)
 {
-    size_t init_size = size;
+    size_t align_mask = align-1;
+    size_t init_size = (size+align_mask)&~align_mask;
     size = roundSize(size);
     if(align<8) align = 8;
     // look for free space
@@ -647,7 +648,7 @@ void* internal_customMemAligned(size_t align, size_t size, int is32bits)
             size_t rsize = 0;
             sub = getFirstBlock(p_blocks[i].block, init_size, &rsize, p_blocks[i].first);
             uintptr_t p = (uintptr_t)sub+sizeof(blockmark_t);
-            uintptr_t aligned_p = (p+(align-1))&~(align-1);
+            uintptr_t aligned_p = (p+align_mask)&~align_mask;
             uintptr_t empty_size = 0;
             if(aligned_p!=p)
                 empty_size = aligned_p-p;