about summary refs log tree commit diff stats
path: root/src/libtools
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-07-02 11:40:23 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-07-02 11:40:23 +0200
commitf2573a5c02681fa4978c50780a8e14ad999414e1 (patch)
tree5d994ea37d7bf1269557203cafb3386d4f1f5d16 /src/libtools
parent96f8873f2cd28df3f9dc6ff16458d61026e5d79b (diff)
downloadbox64-f2573a5c02681fa4978c50780a8e14ad999414e1.tar.gz
box64-f2573a5c02681fa4978c50780a8e14ad999414e1.zip
[DYNAREC] Fixed an issue with unwinding x86 address from signal
Diffstat (limited to 'src/libtools')
-rwxr-xr-xsrc/libtools/signals.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index 744a9a6e..4f07b335 100755
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -426,8 +426,9 @@ uintptr_t getX64Address(dynablock_t* db, uintptr_t arm_addr)
         do {
             x64sz+=db->instsize[i].x64;
             armsz+=db->instsize[i].nat*4;
+            ++i;
         }
-        while(!db->instsize[++i].x64);
+        while(db->instsize[i-1].x64==15 || db->instsize[i-1].nat==15);
         if(arm_addr>=armaddr && arm_addr<(armaddr+armsz))
             return x64addr;
         armaddr+=armsz;