diff options
author | Willem Jan Palenstijn | 2017-05-16 22:41:47 +0200 |
---|---|---|
committer | Willem Jan Palenstijn | 2017-05-16 22:41:47 +0200 |
commit | 779b8336b1227f010099f8faabe4d0c9b035832e (patch) | |
tree | ceddc138e8f3daed7afe8f9aa8b649eb44239083 /engines/sci/engine | |
parent | cadd89e675dbca906fb492fac4e4738bf646bf9e (diff) | |
download | scummvm-rg350-779b8336b1227f010099f8faabe4d0c9b035832e.tar.gz scummvm-rg350-779b8336b1227f010099f8faabe4d0c9b035832e.tar.bz2 scummvm-rg350-779b8336b1227f010099f8faabe4d0c9b035832e.zip |
SCI: Let getClassAddress fail gracefully with SCRIPT_GET_DONT_LOAD
This fixes a crash in the debugger when disassembling the class opcode
with a class from a script that hasn't yet been loaded.
Diffstat (limited to 'engines/sci/engine')
-rw-r--r-- | engines/sci/engine/seg_manager.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index d13d94a957..a941dd38b4 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -1016,6 +1016,9 @@ reg_t SegManager::getClassAddress(int classnr, ScriptLoadType lock, uint16 calle getScriptSegment(the_class->script, lock); if (!the_class->reg.getSegment()) { + if (lock == SCRIPT_GET_DONT_LOAD) + return NULL_REG; + error("[VM] Trying to instantiate class %x by instantiating script 0x%x (%03d) failed", classnr, the_class->script, the_class->script); } } else |