mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
SCI: Avoid crashing when disassembling a call with a bad object
lookupSelector will raise an error if the passed object ID is invalid.
This commit is contained in:
@@ -317,18 +317,22 @@ reg_t disassemble(EngineState *s, reg32_t pos, reg_t objAddr, bool printBWTag, b
|
||||
|
||||
debugN(" %s::%s[", name, g_sci->getKernel()->getSelectorName(selector).c_str());
|
||||
|
||||
switch (lookupSelector(s->_segMan, called_obj_addr, selector, 0, &fun_ref)) {
|
||||
case kSelectorMethod:
|
||||
debugN("FUNCT");
|
||||
argc += restmod;
|
||||
restmod = 0;
|
||||
break;
|
||||
case kSelectorVariable:
|
||||
debugN("VAR");
|
||||
break;
|
||||
case kSelectorNone:
|
||||
debugN("INVALID");
|
||||
break;
|
||||
if (!s->_segMan->getObject(called_obj_addr)) {
|
||||
debugN("INVALID_OBJ");
|
||||
} else {
|
||||
switch (lookupSelector(s->_segMan, called_obj_addr, selector, 0, &fun_ref)) {
|
||||
case kSelectorMethod:
|
||||
debugN("FUNCT");
|
||||
argc += restmod;
|
||||
restmod = 0;
|
||||
break;
|
||||
case kSelectorVariable:
|
||||
debugN("VAR");
|
||||
break;
|
||||
case kSelectorNone:
|
||||
debugN("INVALID");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
debugN("](");
|
||||
|
||||
Reference in New Issue
Block a user