aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicola Mettifogo2007-12-08 11:07:03 +0000
committerNicola Mettifogo2007-12-08 11:07:03 +0000
commitbf2bc3db80030c68325ac3c37ccf692f3b420df2 (patch)
tree30e266a2438bb35155ee381bfc52558f19f6de4e
parente204af821f035deae3367b249cf91b34efe91ee3 (diff)
downloadscummvm-rg350-bf2bc3db80030c68325ac3c37ccf692f3b420df2.tar.gz
scummvm-rg350-bf2bc3db80030c68325ac3c37ccf692f3b420df2.tar.bz2
scummvm-rg350-bf2bc3db80030c68325ac3c37ccf692f3b420df2.zip
Fix for bug #1837503. Location switches can be scheduled recursively, so now flags needed to be handled in a safer way to prevent inconsistencies.
svn-id: r29763
-rw-r--r--engines/parallaction/parallaction_ns.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/engines/parallaction/parallaction_ns.cpp b/engines/parallaction/parallaction_ns.cpp
index 6541498988..36f576f38b 100644
--- a/engines/parallaction/parallaction_ns.cpp
+++ b/engines/parallaction/parallaction_ns.cpp
@@ -370,6 +370,10 @@ void Parallaction_ns::changeLocation(char *location) {
_gfx->setBlackPalette();
_gfx->updateScreen();
+ // BUG #1837503: kEngineChangeLocation flag must be cleared *before* commands
+ // and acommands are executed, so that it can be set again if needed.
+ _engineFlags &= ~kEngineChangeLocation;
+
runCommands(_location._commands);
doLocationEnterTransition();
@@ -381,8 +385,6 @@ void Parallaction_ns::changeLocation(char *location) {
debugC(1, kDebugExec, "changeLocation() done");
- _engineFlags &= ~kEngineChangeLocation;
-
return;
}