From 6b5ee5ecb5dae709d2aaf1c67e31a6a209b23e27 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 30 Jul 2023 23:40:14 +0200 Subject: Fixed non-dynarec behavior on setjmp --- src/dynarec/dynarec.c | 4 ++-- src/elfs/elfloader.c | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/dynarec/dynarec.c b/src/dynarec/dynarec.c index a67cb7cb..9c2fb4c0 100644 --- a/src/dynarec/dynarec.c +++ b/src/dynarec/dynarec.c @@ -151,10 +151,10 @@ void DynaRun(x64emu_t* emu) emu->fork = 0; emu = x64emu_fork(emu, forktype); } - if(emu->need_jmpbuf) - emu->quit = 0; } #endif + if(emu->need_jmpbuf) + emu->quit = 0; } // clear the setjmp emu->jmpbuf = old_jmpbuf; diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index 5a0890cf..265a6241 100644 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -311,8 +311,10 @@ void FreeElfMemory(elfheader_t* head) for(int i=0; imultiblock_n; ++i) { #ifdef DYNAREC dynarec_log(LOG_INFO, "Free DynaBlocks for %s\n", head->path); - cleanDBFromAddressRange((uintptr_t)head->multiblock[i], head->multiblock_size[i], 1); - freeProtection((uintptr_t)head->multiblock[i], head->multiblock_size[i]); + if(box64_dynarec) { + cleanDBFromAddressRange((uintptr_t)head->multiblock[i], head->multiblock_size[i], 1); + freeProtection((uintptr_t)head->multiblock[i], head->multiblock_size[i]); + } #endif munmap(head->multiblock[i], head->multiblock_size[i]); } -- cgit 1.4.1