diff options
-rw-r--r-- | engines/parallaction/parallaction.cpp | 5 | ||||
-rw-r--r-- | engines/parallaction/saveload.cpp | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index 5781c226ba..35c7ba0bc3 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -793,8 +793,9 @@ void Parallaction::changeCharacter(const char *name) { if (scumm_stricmp(v32, _characterName1)) { - if (scumm_stricmp(_characterName1, "null")) - freeCharacter(); + // freeCharacter takes responsibility for checking + // character for sanity before memory is freed + freeCharacter(); _disk->selectArchive("disk1"); diff --git a/engines/parallaction/saveload.cpp b/engines/parallaction/saveload.cpp index e78dde1f82..0a2f92985d 100644 --- a/engines/parallaction/saveload.cpp +++ b/engines/parallaction/saveload.cpp @@ -134,6 +134,10 @@ void Parallaction::doLoadGame(uint16 slot) { parseLocation("common"); + // force reload of character to solve inventory + // bugs, but it's a good maneuver anyway + strcpy(_characterName1, "null"); + strcat(_vm->_location._name, _vm->_characterName); _engineFlags |= kEngineChangeLocation; |