From 66400e7422ffe154b30e640fd26ababa4269a6f7 Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Thu, 31 Jan 2019 19:14:40 +0100 Subject: SAGA: Fix potential crash when talking to Sist (bug #10365) When Rif puts on the rat disguise, he is swapped out for a different actor. When he takes off the disguise, after reaching Sist's office, the old actor is swapped back in again. At that point, original Rif's actor will have a _lastZone pointer which not only is for the wrong room, it was deleted when Rif in disguise left the room. To fix this, we also swap the actors's _lastZone pointers. --- engines/saga/sfuncs.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'engines/saga/sfuncs.cpp') diff --git a/engines/saga/sfuncs.cpp b/engines/saga/sfuncs.cpp index 6456daeb02..32005601bf 100644 --- a/engines/saga/sfuncs.cpp +++ b/engines/saga/sfuncs.cpp @@ -735,6 +735,7 @@ void Script::sfSwapActors(SCRIPTFUNC_PARAMS) { ActorData *actor2 = _vm->_actor->getActor(actorId2); SWAP(actor1->_location, actor2->_location); + SWAP(actor1->_lastZone, actor2->_lastZone); if (actor1->_flags & kProtagonist) { actor1->_flags &= ~kProtagonist; -- cgit v1.2.3