comparison m68k_core.c @ 1341:f1607874dbee

Fix intermittent crash due to an inadvertent executable memory allocation in m68k instruction retranslation
author Michael Pavone <pavone@retrodev.com>
date Thu, 04 May 2017 21:06:35 -0700
parents 85a90964b557
children df6af7187b36
comparison
equal deleted inserted replaced
1340:101b5ce682fe 1341:f1607874dbee
1093 jmp(&orig_code, native_start); 1093 jmp(&orig_code, native_start);
1094 if (!m68k_is_terminal(&instbuf)) { 1094 if (!m68k_is_terminal(&instbuf)) {
1095 code_ptr native_end = code->cur; 1095 code_ptr native_end = code->cur;
1096 code->cur = native_start + MAX_NATIVE_SIZE; 1096 code->cur = native_start + MAX_NATIVE_SIZE;
1097 code_ptr rest = get_native_address_trans(context, orig + (after-inst)*2); 1097 code_ptr rest = get_native_address_trans(context, orig + (after-inst)*2);
1098 code_ptr tmp = code->cur; 1098 code_info tmp_code = {
1099 code->cur = native_end; 1099 .cur = native_end,
1100 jmp(code, rest); 1100 .last = native_start + MAX_NATIVE_SIZE,
1101 code->cur = tmp; 1101 .stack_off = code->stack_off
1102 };
1103 jmp(&tmp_code, rest);
1102 } else { 1104 } else {
1103 code->cur = native_start + MAX_NATIVE_SIZE; 1105 code->cur = native_start + MAX_NATIVE_SIZE;
1104 } 1106 }
1105 m68k_handle_deferred(context); 1107 m68k_handle_deferred(context);
1106 return native_start; 1108 return native_start;