Debugger: Consistently handle invalid addresses.

This commit is contained in:
Unknown W. Brackets 2018-04-24 12:25:41 -07:00
parent 0b8359fd77
commit 0f84c2e995
2 changed files with 17 additions and 17 deletions

View File

@ -244,29 +244,28 @@ void DisassemblyManager::getLine(u32 address, bool insertSymbols, DisassemblyLin
{
analyze(address);
it = findDisassemblyEntry(entries,address,false);
if (it == entries.end())
{
if (address % 4)
dest.totalSize = ((address+3) & ~3)-address;
else
dest.totalSize = 4;
dest.name = "ERROR";
dest.params = "Disassembly failure";
return;
}
}
DisassemblyEntry* entry = it->second;
if (entry->disassemble(address,dest,insertSymbols))
return;
if (it != entries.end()) {
DisassemblyEntry *entry = it->second;
if (entry->disassemble(address, dest, insertSymbols))
return;
}
dest.type = DISTYPE_OTHER;
memset(&dest.info, 0, sizeof(dest.info));
dest.info.opcodeAddress = address;
if (address % 4)
dest.totalSize = ((address+3) & ~3)-address;
else
dest.totalSize = 4;
dest.name = "ERROR";
dest.params = "Disassembly failure";
if (Memory::IsValidRange(address, 4)) {
dest.name = "ERROR";
dest.params = "Disassembly failure";
} else {
dest.name = "-";
dest.params = "";
}
}
u32 DisassemblyManager::getStartAddress(u32 address)

View File

@ -1415,6 +1415,7 @@ skip:
memset(&info, 0, sizeof(info));
if (!Memory::IsValidAddress(address)) {
info.opcodeAddress = address;
return info;
}