about summary refs log tree commit diff stats
path: root/src/dynarec/dynablock.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-05-10 16:23:46 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-05-10 16:24:01 +0200
commit92dd53177f0119c0638c057ea7da5204046846d0 (patch)
tree1df6ea01d55f4f7008cd7b972260fd4b22518250 /src/dynarec/dynablock.c
parentfe9e5bf21db4acca9b567f7ea36b084837ae7648 (diff)
downloadbox64-92dd53177f0119c0638c057ea7da5204046846d0.tar.gz
box64-92dd53177f0119c0638c057ea7da5204046846d0.zip
Improved custom memory allocator
Diffstat (limited to 'src/dynarec/dynablock.c')
-rwxr-xr-xsrc/dynarec/dynablock.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dynarec/dynablock.c b/src/dynarec/dynablock.c
index 758e7c30..c0053a1b 100755
--- a/src/dynarec/dynablock.c
+++ b/src/dynarec/dynablock.c
@@ -212,6 +212,7 @@ static dynablock_t* internalDBGetBlock(x64emu_t* emu, uintptr_t addr, uintptr_t
     block->x64_addr = (void*)addr;
     if(sigsetjmp(&dynarec_jmpbuf, 1)) {
         printf_log(LOG_INFO, "FillBlock at %p triggered a segfault, cancelling\n", (void*)addr);
+        FreeDynablock(block, 0);
         if(need_lock)
             mutex_unlock(&my_context->mutex_dyndump);
         return NULL;
@@ -223,7 +224,7 @@ static dynablock_t* internalDBGetBlock(x64emu_t* emu, uintptr_t addr, uintptr_t
         block = NULL;
     }
     // check size
-    if(block && (block->x64_size || (!block->x64_size && !block->done))) {
+    if(block) {
         int blocksz = block->x64_size;
         if(blocksz>my_context->max_db_size)
             my_context->max_db_size = blocksz;