aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/gob/game_v1.cpp3
-rw-r--r--engines/gob/game_v2.cpp3
-rw-r--r--engines/gob/script.cpp3
3 files changed, 7 insertions, 2 deletions
diff --git a/engines/gob/game_v1.cpp b/engines/gob/game_v1.cpp
index f038c7edc3..1a530fa4f6 100644
--- a/engines/gob/game_v1.cpp
+++ b/engines/gob/game_v1.cpp
@@ -242,7 +242,8 @@ void Game_v1::playTot(int16 skipPlay) {
_vm->_inter->_breakFromLevel = oldBreakFrom;
_vm->_scenery->_pCaptureCounter = oldCaptureCounter;
- _script->pop();
+ if (_script->isLoaded())
+ _script->pop();
}
void Game_v1::clearCollisions() {
diff --git a/engines/gob/game_v2.cpp b/engines/gob/game_v2.cpp
index ace842f18e..e170a1c9d0 100644
--- a/engines/gob/game_v2.cpp
+++ b/engines/gob/game_v2.cpp
@@ -293,7 +293,8 @@ void Game_v2::playTot(int16 skipPlay) {
_vm->_inter->_breakFromLevel = oldBreakFrom;
_vm->_scenery->_pCaptureCounter = oldCaptureCounter;
- _script->pop();
+ if (_script->isLoaded())
+ _script->pop();
}
void Game_v2::clearCollisions() {
diff --git a/engines/gob/script.cpp b/engines/gob/script.cpp
index 7ed27771f3..0ac9d26a9b 100644
--- a/engines/gob/script.cpp
+++ b/engines/gob/script.cpp
@@ -343,6 +343,9 @@ void Script::unloadTOT() {
if (_lomHandle >= 0)
_vm->_dataIO->closeData(_lomHandle);
+ while (!_callStack.empty())
+ pop();
+
delete[] _totData;
_totData = 0;