aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2007-06-20 01:45:38 +0000
committerFilippos Karapetis2007-06-20 01:45:38 +0000
commit6689a6607be844740b7f27e2d9021d36538001aa (patch)
treef1fe014fcfd8b49e13e7ca5e09febf97540cd8a3
parent61c91cafb9376b10d643269d55e409da6a87f667 (diff)
downloadscummvm-rg350-6689a6607be844740b7f27e2d9021d36538001aa.tar.gz
scummvm-rg350-6689a6607be844740b7f27e2d9021d36538001aa.tar.bz2
scummvm-rg350-6689a6607be844740b7f27e2d9021d36538001aa.zip
Fix crashes with some savegames in IHNM
svn-id: r27553
-rw-r--r--engines/saga/saveload.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/engines/saga/saveload.cpp b/engines/saga/saveload.cpp
index 05cf2f3aee..c93ace81b3 100644
--- a/engines/saga/saveload.cpp
+++ b/engines/saga/saveload.cpp
@@ -310,7 +310,12 @@ void SagaEngine::load(const char *fileName) {
if (getGameType() != GType_ITE) {
if (_scene->currentProtag() != 0 && _scene->currentChapterNumber() != 6) {
ActorData *actor1 = _actor->getFirstActor();
- ActorData *actor2 = _actor->getActor(_scene->currentProtag());
+ // Original stores the current protagonist ID from sfSwapActors:
+ //ActorData *actor2 = _actor->getActor(_scene->currentProtag());
+ // However, we already store the protagonist, so merely getting the saved
+ // protagonist is easier and safer, and works without glitches
+ ActorData *actor2 = _actor->_protagonist;
+
SWAP(actor1->_location, actor2->_location);
actor2->_flags &= ~kProtagonist;