aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/parallaction/parallaction.cpp5
-rw-r--r--engines/parallaction/saveload.cpp4
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;