diff options
Diffstat (limited to 'src/dynarec/dynablock.c')
| -rw-r--r-- | src/dynarec/dynablock.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/dynarec/dynablock.c b/src/dynarec/dynablock.c index 114479bc..d95fb829 100644 --- a/src/dynarec/dynablock.c +++ b/src/dynarec/dynablock.c @@ -171,11 +171,16 @@ dynablock_t *AddNewDynablock(uintptr_t addr) } //TODO: move this to dynrec_arm.c and track allocated structure to avoid memory leak -static __thread struct __jmp_buf_tag dynarec_jmpbuf; +static __thread JUMPBUFF dynarec_jmpbuf; +#ifdef ANDROID +#define DYN_JMPBUF dynarec_jmpbuf +#else +#define DYN_JMPBUF &dynarec_jmpbuf +#endif void cancelFillBlock() { - longjmp(&dynarec_jmpbuf, 1); + longjmp(DYN_JMPBUF, 1); } /* @@ -208,7 +213,7 @@ static dynablock_t* internalDBGetBlock(x64emu_t* emu, uintptr_t addr, uintptr_t // fill the block block->x64_addr = (void*)addr; - if(sigsetjmp(&dynarec_jmpbuf, 1)) { + if(sigsetjmp(DYN_JMPBUF, 1)) { printf_log(LOG_INFO, "FillBlock at %p triggered a segfault, canceling\n", (void*)addr); FreeDynablock(block, 0); if(need_lock) |