diff --git a/Core/MIPS/IR/IRJit.cpp b/Core/MIPS/IR/IRJit.cpp index 511a5fe755..9c8fefeebf 100644 --- a/Core/MIPS/IR/IRJit.cpp +++ b/Core/MIPS/IR/IRJit.cpp @@ -405,14 +405,18 @@ int IRBlockCache::GetBlockNumberFromStartAddress(u32 em_address, bool realBlocks return -1; const std::vector &blocksInPage = iter->second; + int best = -1; for (int i : blocksInPage) { uint32_t start, size; blocks_[i].GetRange(start, size); if (start == em_address) { - return i; + best = i; + if (blocks_[i].IsValid()) { + return i; + } } } - return -1; + return best; } bool IRBlock::HasOriginalFirstOp() const {