aboutsummaryrefslogtreecommitdiff
path: root/engines/gob
diff options
context:
space:
mode:
authorSven Hesse2009-06-22 16:29:31 +0000
committerSven Hesse2009-06-22 16:29:31 +0000
commit565a9f5b0d4528b09531e1c381f81587546a0580 (patch)
tree5003a21c18038c00ee3b706920864e21e43d10fd /engines/gob
parent49c46a46f7a6aa8a34b14c9dd0097a8e41496732 (diff)
downloadscummvm-rg350-565a9f5b0d4528b09531e1c381f81587546a0580.tar.gz
scummvm-rg350-565a9f5b0d4528b09531e1c381f81587546a0580.tar.bz2
scummvm-rg350-565a9f5b0d4528b09531e1c381f81587546a0580.zip
Don't assert on pop when no script is loaded
svn-id: r41770
Diffstat (limited to 'engines/gob')
-rw-r--r--engines/gob/game_v1.cpp3
-rw-r--r--engines/gob/game_v2.cpp3
-rw-r--r--engines/gob/script.cpp13
3 files changed, 15 insertions, 4 deletions
diff --git a/engines/gob/game_v1.cpp b/engines/gob/game_v1.cpp
index 1a530fa4f6..f038c7edc3 100644
--- a/engines/gob/game_v1.cpp
+++ b/engines/gob/game_v1.cpp
@@ -242,8 +242,7 @@ void Game_v1::playTot(int16 skipPlay) {
_vm->_inter->_breakFromLevel = oldBreakFrom;
_vm->_scenery->_pCaptureCounter = oldCaptureCounter;
- if (_script->isLoaded())
- _script->pop();
+ _script->pop();
}
void Game_v1::clearCollisions() {
diff --git a/engines/gob/game_v2.cpp b/engines/gob/game_v2.cpp
index e170a1c9d0..ace842f18e 100644
--- a/engines/gob/game_v2.cpp
+++ b/engines/gob/game_v2.cpp
@@ -293,8 +293,7 @@ void Game_v2::playTot(int16 skipPlay) {
_vm->_inter->_breakFromLevel = oldBreakFrom;
_vm->_scenery->_pCaptureCounter = oldCaptureCounter;
- if (_script->isLoaded())
- _script->pop();
+ _script->pop();
}
void Game_v2::clearCollisions() {
diff --git a/engines/gob/script.cpp b/engines/gob/script.cpp
index ab2d8cdaf2..e4808cf9ce 100644
--- a/engines/gob/script.cpp
+++ b/engines/gob/script.cpp
@@ -419,6 +419,10 @@ bool Script::isFinished() const {
}
void Script::push() {
+ if (!isLoaded())
+ // Nothing to do
+ return;
+
CallEntry currentCall;
currentCall.totPtr = _totPtr;
@@ -428,6 +432,11 @@ void Script::push() {
}
void Script::pop(bool ret) {
+ if (!isLoaded())
+ // Nothing to do
+ return;
+
+ // Unmatched pop?
assert(!_callStack.empty());
CallEntry lastCall = _callStack.pop();
@@ -439,6 +448,10 @@ void Script::pop(bool ret) {
}
void Script::call(uint32 offset) {
+ if (!isLoaded())
+ // Nothing to do
+ return;
+
push();
seek(offset);
}