[Scummvm-git-logs] scummvm master -> fd29564246433aa257a4c1f7d8f334cf016b2b80

sdelamarre noreply at scummvm.org
Mon May 19 20:51:44 UTC 2025


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

Summary:
fd29564246 GOB: Fix SaveLoad_v7 initialization


Commit: fd29564246433aa257a4c1f7d8f334cf016b2b80
    https://github.com/scummvm/scummvm/commit/fd29564246433aa257a4c1f7d8f334cf016b2b80
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2025-05-19T22:51:41+02:00

Commit Message:
GOB: Fix SaveLoad_v7 initialization

The initialization order must match exactly the order of _saveFiles.

Discovered by GCC warning on release:

engines/gob/save/saveload_v7.cpp: In constructor 'Gob::SaveLoad_v7::SaveLoad_v7(Gob::GobEngine*, const char*)':
engines/gob/save/saveload_v7.cpp:1466:45: warning: iteration 9 invokes undefined behavior [-Waggressive-loop-optimizations]
 1466 |                 _saveFiles[index++].handler = _addy4GrundschuleHandler[i] = new FakeFileHandler(_vm);
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
engines/gob/save/saveload_v7.cpp:1465:27: note: within this loop
 1465 |         for (int i = 0; i < 11; i++)
      |                         ~~^~~~

Amends 7e3ec46082ea17e9666fa622d20ce41166dd985a.

Changed paths:
    engines/gob/save/saveload_v7.cpp


diff --git a/engines/gob/save/saveload_v7.cpp b/engines/gob/save/saveload_v7.cpp
index b66f5f3251d..deff1533093 100644
--- a/engines/gob/save/saveload_v7.cpp
+++ b/engines/gob/save/saveload_v7.cpp
@@ -930,8 +930,10 @@ SaveLoad_v7::SaveFile SaveLoad_v7::_saveFiles[] = {
 	{"DATA/GIE07_16.pho", kSaveModeSave, nullptr, "app progress" },
 
 	{"APPLIS/appli_05.ini", kSaveModeSave, nullptr, "app info" },
+	{"APPLIS/appli_06.ini", kSaveModeSave, nullptr, "app info" },
+	{"APPLIS/appli_07.ini", kSaveModeSave, nullptr, "app info" },
 
-    // Adi 4 / Addy 4 Base
+	// Adi 4 / Addy 4 Base
 	{"config00.inf", kSaveModeSave, nullptr, nullptr        },
 	{"statev00.inf", kSaveModeSave, nullptr, nullptr        },
 	// Adi 4 / Addy 4 Grundschule
@@ -1367,13 +1369,21 @@ SaveLoad_v7::SaveLoad_v7(GobEngine *vm, const char *targetName) :
 
 	for (uint32 i = 0; i < kChildrenCount; i++) {
 		_saveFiles[index++].handler = _adibou2MemoHandler[i] = new GameFileHandler(_vm, targetName, Common::String::format("memo%02d", i + 1));
-		_saveFiles[index++].handler = _adibou2DiploHandler[i] = new GameFileHandler(_vm, targetName, Common::String::format("diplo%02d", i + 1));
 	}
 
+	for (uint32 i = 0; i < kChildrenCount; i++) {
+		_saveFiles[index++].handler = _adibou2DiploHandler[i] = new GameFileHandler(_vm, targetName, Common::String::format("diplo%02d", i + 1));
+	}
 
 	for (uint32 i = 0; i < kAdibou2NbrOfApplications; i++) {
 		_saveFiles[index++].handler = _adibou2AppliHandler[i] = new GameFileHandler(_vm, targetName, Common::String::format("appli%02d", i + 1));
+	}
+
+	for (uint32 i = 0; i < kAdibou2NbrOfApplications; i++) {
 		_saveFiles[index++].handler = _adibou2CriteHandler[i] = new GameFileHandler(_vm, targetName, Common::String::format("crite%02d", i + 1));
+	}
+
+	for (uint32 i = 0; i < kAdibou2NbrOfApplications; i++) {
 		_saveFiles[index++].handler = _adibou2ExoHandler[i] = new GameFileHandler(_vm, targetName, Common::String::format("exo%02d", i + 1));
 	}
 
@@ -1383,14 +1393,17 @@ SaveLoad_v7::SaveLoad_v7(GobEngine *vm, const char *targetName) :
 
 	const Common::Array<int> applisOffsets = {0, 4, 8, 12, 16, 20};
 	_saveFiles[index++].handler = _adibou2ApplicationsInfoHandler = new GameFileHandler(_vm, targetName, "applis");
-	_saveFiles[index++].handler = _adibou2RetourHandler = new FakeFileHandler(_vm);
 	_saveFiles[index++].handler = _adibou2LanceHandler = new FakeFileHandler(_vm);
+	_saveFiles[index++].handler = _adibou2RetourHandler = new FakeFileHandler(_vm);
 
 	for (uint32 i = 0; i < kChildrenCount; i++) {
 		for (uint32 j = 0; j < kAdibou2NbrOfSavedDrawings; j++) {
 			_saveFiles[index++].handler = _adibou2DrawingHandler[i][j] = new SpriteHandler(_vm,
 																						   targetName,
 																						   Common::String::format("draw%02d_%02d", i + 1, j + 1));
+		}
+
+		for (uint32 j = 0; j < kAdibou2NbrOfSavedDrawings; j++) {
 			_saveFiles[index++].handler = _adibou2DrawingThumbnailHandler[i][j] = new SpriteHandler(_vm,
 																									targetName,
 																									Common::String::format("draw_thumbnail_%02d_%02d", i + 1, j + 1));
@@ -1447,13 +1460,15 @@ SaveLoad_v7::SaveLoad_v7(GobEngine *vm, const char *targetName) :
 	_saveFiles[index++].handler = _adibou2RelanceHandler = new FakeFileHandler(_vm);
 	_saveFiles[index++].handler = _adibou2MemHandler = new FakeFileHandler(_vm);
 
-	for (uint32 i = 4; i < kAdibou2NbrOfApplications; i++) {
-		for (uint32 j = 0; j < kChildrenCount; j++) {
+	for (uint32 j = 0; j < kChildrenCount; j++) {
+		for (uint32 i = 4; i < kAdibou2NbrOfApplications; i++) {
 			_saveFiles[index++].handler = _adibou2AppProgressExtHandler[i - 4][j] = new GameFileHandler(_vm,
 																										targetName,
 																										Common::String::format("gie_%02d_%02d_pho", i + 1, j + 1));
 		}
+	}
 
+	for (uint32 i = 4; i < kAdibou2NbrOfApplications; i++) {
 		_saveFiles[index++].handler = _adibou2AppliIniHandler[i - 4] = new GameFileHandler(_vm,
 																						   targetName,
 																						   Common::String::format("appli_%02d_ini", i + 1));




More information about the Scummvm-git-logs mailing list