aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/animate.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2010-06-25 17:25:00 +0000
committerFilippos Karapetis2010-06-25 17:25:00 +0000
commitaedc77f0bddcfcd11e465ee29c5fc66973ef9f9b (patch)
treedfd0a5c3e3e93a93a67500b43c69ce5f7e812e83 /engines/sci/graphics/animate.cpp
parentb6d1b3bc0b2c4e3edbc49a73cb629313eb84c889 (diff)
downloadscummvm-rg350-aedc77f0bddcfcd11e465ee29c5fc66973ef9f9b.tar.gz
scummvm-rg350-aedc77f0bddcfcd11e465ee29c5fc66973ef9f9b.tar.bz2
scummvm-rg350-aedc77f0bddcfcd11e465ee29c5fc66973ef9f9b.zip
When loading a game, stop all running VMs recursively, and also stop kAnimate's current recursion. This fixes the invalid execution stack frame in SQ1, when loading from the death screen after dying from the acid drops in Kerona. This should also fix the invalid hunk pointers, thus the warning about invalid hunk pointers has been turned into an error, as it shouldn't occur anymore
svn-id: r50277
Diffstat (limited to 'engines/sci/graphics/animate.cpp')
-rw-r--r--engines/sci/graphics/animate.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/engines/sci/graphics/animate.cpp b/engines/sci/graphics/animate.cpp
index 9018a6f62e..08ff3bfc80 100644
--- a/engines/sci/graphics/animate.cpp
+++ b/engines/sci/graphics/animate.cpp
@@ -98,6 +98,11 @@ bool GfxAnimate::invoke(List *list, int argc, reg_t *argv) {
if (!(signal & kSignalFrozen)) {
// Call .doit method of that object
invokeSelector(_s, curObject, SELECTOR(doit), argc, argv, 0);
+
+ // If a game is being loaded, stop processing
+ if (_s->abortScriptProcessing != kAbortNone || g_engine->shouldQuit())
+ return true; // Stop processing
+
// Lookup node again, since the nodetable it was in may have been reallocated
curNode = _s->_segMan->lookupNode(curAddress);
}