about summary refs log tree commit diff stats
path: root/src/dynarec
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-08-09 14:06:38 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-08-09 14:06:38 +0200
commit4d9559f3454a466876d39b588c365a2b76e87e83 (patch)
tree5605d3f241a3f25bb5bb063e4b40410f8ad9b46e /src/dynarec
parented63000e23835932bdfd45066dd0ca54fb31e414 (diff)
downloadbox64-4d9559f3454a466876d39b588c365a2b76e87e83.tar.gz
box64-4d9559f3454a466876d39b588c365a2b76e87e83.zip
Added handling of longjmp inside signals handler (from box86)
Diffstat (limited to 'src/dynarec')
-rwxr-xr-xsrc/dynarec/dynarec.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dynarec/dynarec.c b/src/dynarec/dynarec.c
index f2302e17..0c7550b9 100755
--- a/src/dynarec/dynarec.c
+++ b/src/dynarec/dynarec.c
@@ -139,7 +139,8 @@ void DynaCall(x64emu_t* emu, uintptr_t addr)
         emu->quit = 0;  // reset Quit flags...
         emu->df = d_none;
         if(emu->quitonlongjmp && emu->longjmp) {
-            emu->longjmp = 0;   // don't change anything because of the longjmp
+            if(emu->quitonlongjmp==1)
+                emu->longjmp = 0;   // don't change anything because of the longjmp
         } else {
             R_RBX = old_rbx;
             R_RDI = old_rdi;