From bf2bc3db80030c68325ac3c37ccf692f3b420df2 Mon Sep 17 00:00:00 2001 From: Nicola Mettifogo Date: Sat, 8 Dec 2007 11:07:03 +0000 Subject: 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 --- engines/parallaction/parallaction_ns.cpp | 6 ++++-- 1 file 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; } -- cgit v1.2.3