diff options
author | Sven Hesse | 2009-06-22 10:16:45 +0000 |
---|---|---|
committer | Sven Hesse | 2009-06-22 10:16:45 +0000 |
commit | 850203fc730a0888206e04431425b19fe414e0db (patch) | |
tree | b92dfc65da30faa3721b143eefd6004c556c7895 /engines/gob | |
parent | 648139dda7e759ebc2ee8d45301698c8b447a63d (diff) | |
download | scummvm-rg350-850203fc730a0888206e04431425b19fe414e0db.tar.gz scummvm-rg350-850203fc730a0888206e04431425b19fe414e0db.tar.bz2 scummvm-rg350-850203fc730a0888206e04431425b19fe414e0db.zip |
Unwinding the call stack before unloading the script
svn-id: r41759
Diffstat (limited to 'engines/gob')
-rw-r--r-- | engines/gob/game_v1.cpp | 3 | ||||
-rw-r--r-- | engines/gob/game_v2.cpp | 3 | ||||
-rw-r--r-- | engines/gob/script.cpp | 3 |
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; |