diff --git a/core/rec-ARM/rec_arm.cpp b/core/rec-ARM/rec_arm.cpp index edd80b625..c8eb112aa 100644 --- a/core/rec-ARM/rec_arm.cpp +++ b/core/rec-ARM/rec_arm.cpp @@ -778,6 +778,9 @@ bool Arm32Dynarec::rewrite(host_context_t& context, void *faultAddress) u32 full; }; + if (codeBuffer == nullptr) + // init() not called yet + return false; if ((u8 *)context.pc < (u8 *)codeBuffer->getBase() || (u8 *)context.pc >= (u8 *)codeBuffer->getBase() + codeBuffer->getSize()) return false; diff --git a/core/rec-ARM64/rec_arm64.cpp b/core/rec-ARM64/rec_arm64.cpp index 04d56151a..260adfbd1 100644 --- a/core/rec-ARM64/rec_arm64.cpp +++ b/core/rec-ARM64/rec_arm64.cpp @@ -2312,6 +2312,9 @@ public: 8, }; + if (codeBuffer == nullptr) + // init() not called yet + return false; //LOGI("Sh4Dynarec::rewrite pc %zx\n", context.pc); u32 *code_ptr = (u32 *)CC_RX2RW(context.pc); if ((u8 *)code_ptr < (u8 *)codeBuffer->getBase() @@ -2355,7 +2358,7 @@ public: private: Arm64Assembler* compiler = nullptr; bool restarting = false; - Sh4CodeBuffer *codeBuffer; + Sh4CodeBuffer *codeBuffer = nullptr; }; static Arm64Dynarec instance; diff --git a/core/rec-x64/rec_x64.cpp b/core/rec-x64/rec_x64.cpp index 817c0aff8..db2f7fe5f 100644 --- a/core/rec-x64/rec_x64.cpp +++ b/core/rec-x64/rec_x64.cpp @@ -1360,6 +1360,9 @@ public: bool rewrite(host_context_t &context, void *faultAddress) override { + if (codeBuffer == nullptr) + // init() not called yet + return false; void* protStart = codeBuffer->get(); size_t protSize = codeBuffer->getFreeSpace(); virtmem::jit_set_exec(protStart, protSize, false); diff --git a/core/rec-x86/rec_x86.cpp b/core/rec-x86/rec_x86.cpp index e742ebfc1..54188fe16 100644 --- a/core/rec-x86/rec_x86.cpp +++ b/core/rec-x86/rec_x86.cpp @@ -924,6 +924,9 @@ public: bool rewrite(host_context_t &context, void *faultAddress) override { + if (codeBuffer == nullptr) + // init() not called yet + return false; u8 *rewriteAddr = *(u8 **)context.esp - 5; X86Compiler *compiler = new X86Compiler(*codeBuffer, rewriteAddr); bool rv = compiler->rewriteMemAccess(context);