diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-08-09 14:06:38 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-08-09 14:06:38 +0200 |
| commit | 4d9559f3454a466876d39b588c365a2b76e87e83 (patch) | |
| tree | 5605d3f241a3f25bb5bb063e4b40410f8ad9b46e /src/dynarec | |
| parent | ed63000e23835932bdfd45066dd0ca54fb31e414 (diff) | |
| download | box64-4d9559f3454a466876d39b588c365a2b76e87e83.tar.gz box64-4d9559f3454a466876d39b588c365a2b76e87e83.zip | |
Added handling of longjmp inside signals handler (from box86)
Diffstat (limited to 'src/dynarec')
| -rwxr-xr-x | src/dynarec/dynarec.c | 3 |
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; |