about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-10-07 22:56:47 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-10-07 22:56:47 +0200
commitce5daaa835fffd790db6973cf5ec75bedf31a18a (patch)
treeda5c2ad53c2281ac200e6590fd387e8579472c00
parent8fe06816819eb41e6e7c99d5b26ba3e9a0b9fc92 (diff)
downloadbox64-ce5daaa835fffd790db6973cf5ec75bedf31a18a.tar.gz
box64-ce5daaa835fffd790db6973cf5ec75bedf31a18a.zip
Small change in custom Aligned Memory Allocator
-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;