diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-07-02 11:40:23 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-07-02 11:40:23 +0200 |
| commit | f2573a5c02681fa4978c50780a8e14ad999414e1 (patch) | |
| tree | 5d994ea37d7bf1269557203cafb3386d4f1f5d16 /src/libtools | |
| parent | 96f8873f2cd28df3f9dc6ff16458d61026e5d79b (diff) | |
| download | box64-f2573a5c02681fa4978c50780a8e14ad999414e1.tar.gz box64-f2573a5c02681fa4978c50780a8e14ad999414e1.zip | |
[DYNAREC] Fixed an issue with unwinding x86 address from signal
Diffstat (limited to 'src/libtools')
| -rwxr-xr-x | src/libtools/signals.c | 3 |
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; |