diff options
author | Torbjörn Andersson | 2019-01-31 19:14:40 +0100 |
---|---|---|
committer | Filippos Karapetis | 2019-02-03 23:33:59 +0200 |
commit | 66400e7422ffe154b30e640fd26ababa4269a6f7 (patch) | |
tree | ad85f3948261c9a61e9f2ce79590e0c42acb15c5 /engines | |
parent | 90f6d119cfa15a004cfe16a4155bb43ce5b7aa32 (diff) | |
download | scummvm-rg350-66400e7422ffe154b30e640fd26ababa4269a6f7.tar.gz scummvm-rg350-66400e7422ffe154b30e640fd26ababa4269a6f7.tar.bz2 scummvm-rg350-66400e7422ffe154b30e640fd26ababa4269a6f7.zip |
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.
Diffstat (limited to 'engines')
-rw-r--r-- | engines/saga/sfuncs.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
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; |