[Scummvm-git-logs] scummvm branch-2-2 -> 840ee893728fba464621e53fa76f0a5562971a66

dreammaster paulfgilbert at gmail.com
Sun Sep 13 00:39:37 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
840ee89372 XEEN: Fix crash reading book in Great Pyramid


Commit: 840ee893728fba464621e53fa76f0a5562971a66
    https://github.com/scummvm/scummvm/commit/840ee893728fba464621e53fa76f0a5562971a66
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-09-12T17:39:25-07:00

Commit Message:
XEEN: Fix crash reading book in Great Pyramid

Changed paths:
    engines/xeen/party.cpp
    engines/xeen/party.h
    engines/xeen/xeen.h


diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index 48100310c5..2bdcc93746 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -249,7 +249,7 @@ Party::Party(XeenEngine *vm) {
 	Common::fill(&_questItems[0], &_questItems[85], 0);
 
 	for (int i = 0; i < TOTAL_CHARACTERS; ++i)
-		Common::fill(&_characterFlags[i][0], &_characterFlags[i][24], false);
+		Common::fill(&_characterFlags[i][0], &_characterFlags[i][32], false);
 
 	_newDay = false;
 	_isNight = false;
@@ -338,9 +338,11 @@ void Party::synchronize(Common::Serializer &s) {
 
 	_blacksmithWares.synchronize(s, 1);
 
+	int numFlags = s.getVersion() == 1 ? 24 : 32;
 	for (int i = 0; i < TOTAL_CHARACTERS; ++i)
-		File::syncBitFlags(s, &_characterFlags[i][0], &_characterFlags[i][24]);
-	s.syncBytes(&dummy[0], 30);
+		File::syncBitFlags(s, &_characterFlags[i][0], &_characterFlags[i][numFlags]);
+	if (s.getVersion() == 1)
+		s.syncBytes(&dummy[0], 30);
 
 	if (s.isLoading())
 		_newDay = _minutes < 300;
@@ -1450,7 +1452,7 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
 		_questFlags[(_vm->getGameID() == GType_Swords ? 0 : files._ccNum * 30) + giveVal] = true;
 		break;
 	case 107:
-		assert(giveVal < 24);
+		assert(giveVal < 32);
 		_characterFlags[ps._rosterId][giveVal] = true;
 		break;
 	default:
diff --git a/engines/xeen/party.h b/engines/xeen/party.h
index fbe628f097..2cecd93c6c 100644
--- a/engines/xeen/party.h
+++ b/engines/xeen/party.h
@@ -222,7 +222,7 @@ public:
 	bool _worldFlags[128];
 	bool _questFlags[60];
 	int _questItems[TOTAL_QUEST_ITEMS];
-	bool _characterFlags[30][24];
+	bool _characterFlags[30][32];
 public:
 	// Other party related runtime data
 	Roster _roster;
diff --git a/engines/xeen/xeen.h b/engines/xeen/xeen.h
index 038abe7fcd..b880b68fe4 100644
--- a/engines/xeen/xeen.h
+++ b/engines/xeen/xeen.h
@@ -104,7 +104,7 @@ enum GameMode {
 
 struct XeenGameDescription;
 
-#define XEEN_SAVEGAME_VERSION 1
+#define XEEN_SAVEGAME_VERSION 2
 
 class XeenEngine : public Engine {
 	/**




More information about the Scummvm-git-logs mailing list