diff options
author | Willem Jan Palenstijn | 2009-09-28 20:21:09 +0000 |
---|---|---|
committer | Willem Jan Palenstijn | 2009-09-28 20:21:09 +0000 |
commit | 88a9099949ebd2409878cdb9ee7d3d329ead1ad8 (patch) | |
tree | 9ab29e12b8cc3d15ded5bd9ef65d319b032025d2 /engines | |
parent | f413356bed8399e93aa9cdfc48f574e157d9fcb1 (diff) | |
download | scummvm-rg350-88a9099949ebd2409878cdb9ee7d3d329ead1ad8.tar.gz scummvm-rg350-88a9099949ebd2409878cdb9ee7d3d329ead1ad8.tar.bz2 scummvm-rg350-88a9099949ebd2409878cdb9ee7d3d329ead1ad8.zip |
SCI: Remove unsafe unmarkDeleted function.
It did not undo all effects of a script being deleted (specifically its
superclasses remain unlocked), causing an inconsistent
state. Also removed EcoQuest CD hack that worked around a specific
instance of this problem.
svn-id: r44449
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/engine/kscripts.cpp | 6 | ||||
-rw-r--r-- | engines/sci/engine/segment.h | 7 | ||||
-rw-r--r-- | engines/sci/engine/vm.cpp | 4 |
3 files changed, 1 insertions, 16 deletions
diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp index f9ec052d0f..e868a58836 100644 --- a/engines/sci/engine/kscripts.cpp +++ b/engines/sci/engine/kscripts.cpp @@ -218,12 +218,6 @@ reg_t kDisposeScript(EngineState *s, int, int argc, reg_t *argv) { if (scr) { if (s->_executionStack.back().addr.pc.segment != id) scr->setLockers(1); - - // HACK for EcoQuest CD - if (s->_gameName == "ecoquest" && script == 821) { - warning("kDisposeScript hack for EcoQuest 1 CD: not disposing script 821"); - scr->setLockers(2); - } } script_uninstantiate(s->segMan, script); diff --git a/engines/sci/engine/segment.h b/engines/sci/engine/segment.h index a93aaa1f69..d88c0dac17 100644 --- a/engines/sci/engine/segment.h +++ b/engines/sci/engine/segment.h @@ -433,13 +433,6 @@ public: } /** - * Marks the script as not deleted. - */ - void unmarkDeleted() { - _markedAsDeleted = false; - } - - /** * Determines whether the script is marked as being deleted. */ bool isMarkedAsDeleted() const { diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index 78f2d24a1c..d5188665f6 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -208,10 +208,8 @@ ExecStack *execute_method(EngineState *s, uint16 script, uint16 pubfunct, StackP int seg = s->segMan->getScriptSegment(script); Script *scr = s->segMan->getScriptIfLoaded(seg); - if (!scr) // Script not present yet? + if (!scr || scr->isMarkedAsDeleted()) // Script not present yet? seg = script_instantiate(s->resMan, s->segMan, script); - else - scr->unmarkDeleted(); const int temp = s->segMan->validateExportFunc(pubfunct, seg); if (!temp) { |