diff options
author | Mike Pavone <pavone@retrodev.com> | 2013-05-04 14:36:50 -0700 |
---|---|---|
committer | Mike Pavone <pavone@retrodev.com> | 2013-05-04 14:36:50 -0700 |
commit | d3d2b9651df7ba9fc44b0e24d93a5d3258c75c57 (patch) | |
tree | 8d52d4db5e5f7b33ec9d099929c30e6cb88b1f96 /z80_to_x86.c | |
parent | e8b34d6a607ae2e7b0b232baec476b5cbafb4aca (diff) |
Remove deferred address entries from abandoned translations inside z80_retrans_inst
Diffstat (limited to 'z80_to_x86.c')
-rw-r--r-- | z80_to_x86.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/z80_to_x86.c b/z80_to_x86.c index 7cb6eef..20bd873 100644 --- a/z80_to_x86.c +++ b/z80_to_x86.c @@ -1567,10 +1567,12 @@ void * z80_retranslate_inst(uint32_t address, z80_context * context) opts->code_end = dst_end = dst + size; opts->cur_code = dst; } + deferred_addr * orig_deferred = opts->deferred; uint8_t * native_end = translate_z80inst(&instbuf, dst, context, address); if ((native_end - dst) <= orig_size) { uint8_t * native_next = z80_get_native_address(context, address + after-inst); if (native_next && ((native_next == orig_start + orig_size) || (orig_size - (native_end - dst)) > 5)) { + remove_deferred_until(&opts->deferred, orig_deferred); native_end = translate_z80inst(&instbuf, orig_start, context, address); if (native_next == orig_start + orig_size && (native_next-native_end) < 2) { while (native_end < orig_start + orig_size) { |