about summary refs log tree commit diff stats
path: root/src/libtools
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-11-17 16:21:38 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-11-17 16:21:38 +0100
commit54be0c0dec8ad3c81caa0366f84c056717792cb2 (patch)
treeec3f895739734aba1a0b73eb622634cf39c1e8c4 /src/libtools
parent20df2789b542b5c280d71b4ae0fa797a24f6d130 (diff)
downloadbox64-54be0c0dec8ad3c81caa0366f84c056717792cb2.tar.gz
box64-54be0c0dec8ad3c81caa0366f84c056717792cb2.zip
Saved defered flag status when processing signal / foreign function
Diffstat (limited to 'src/libtools')
-rw-r--r--src/libtools/signals.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index 19c49dab..2145a3e4 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -966,7 +966,7 @@ void my_sigactionhandler_oldcode(int32_t sig, int simple, siginfo_t* info, void
     else if(sig==SIGSEGV) {
         if((uintptr_t)info->si_addr == sigcontext->uc_mcontext.gregs[X64_RIP]) {
             sigcontext->uc_mcontext.gregs[X64_ERR] = (info->si_errno==0x1234)?0:((info->si_errno==0xdead)?(0x2|(info->si_code<<3)):0x0010);    // execution flag issue (probably), unless it's a #GP(0)
-            sigcontext->uc_mcontext.gregs[X64_TRAPNO] = (info->si_code == SEGV_ACCERR || (info->si_errno==0x1234) || (info->si_errno==0xdead) || (uintptr_t)info->si_addr==0)?13:14;
+            sigcontext->uc_mcontext.gregs[X64_TRAPNO] = ((info->si_code==SEGV_ACCERR) || (info->si_errno==0x1234) || (info->si_errno==0xdead) || ((uintptr_t)info->si_addr==0))?13:14;
         } else if(info->si_code==SEGV_ACCERR && !(prot&PROT_WRITE)) {
             sigcontext->uc_mcontext.gregs[X64_ERR] = 0x0002;    // write flag issue
             if(labs((intptr_t)info->si_addr-(intptr_t)sigcontext->uc_mcontext.gregs[X64_RSP])<16)