[Scummvm-git-logs] scummvm master -> 6336897f2a9bc91ae87bdd4fd3bc07c5bc650b25

a-yyg 76591232+a-yyg at users.noreply.github.com
Mon Jul 19 04:26:52 UTC 2021


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:
6336897f2a SAGA2: Fix pointer arithmetic in tile.cpp


Commit: 6336897f2a9bc91ae87bdd4fd3bc07c5bc650b25
    https://github.com/scummvm/scummvm/commit/6336897f2a9bc91ae87bdd4fd3bc07c5bc650b25
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-19T13:26:16+09:00

Commit Message:
SAGA2: Fix pointer arithmetic in tile.cpp

Changed paths:
    engines/saga2/tile.cpp
    engines/saga2/tile.h


diff --git a/engines/saga2/tile.cpp b/engines/saga2/tile.cpp
index d1da5f36e7..b00f31b7ae 100644
--- a/engines/saga2/tile.cpp
+++ b/engines/saga2/tile.cpp
@@ -1442,6 +1442,7 @@ void initMaps(void) {
 		ripTableList[k].metaID = NoMetaTile;
 		ripTableList[k].ripID = 0;
 		memset(ripTableList[k].zTable, 0, sizeof(ripTableList[k].zTable));
+		ripTableList[k]._index = k;
 	}
 
 	initPlatformCache();
@@ -2086,8 +2087,7 @@ RipTable *RipTable::ripTableAddress(RipTableID id) {
 //	Return a rip table's ID
 
 RipTableID RipTable::thisID(void) {
-	warning("RipTable::thisID(): Unsafe pointer arithmetics");
-	return this - ripTableList;
+	return _index;
 }
 
 /* ====================================================================== *
@@ -2699,7 +2699,7 @@ void buildRipTables(void) {
 			//  Null out pointer
 			mtTable[i] = nullptr;
 			//  Mark the table as unavailable
-			tableIndex = mtRipTable - ripTableList;
+			tableIndex = mtRipTable->_index;
 			tableAvail[tableIndex >> 3] &= ~(1 << (tableIndex & 0x7));
 		}
 	}
diff --git a/engines/saga2/tile.h b/engines/saga2/tile.h
index d272ee670b..4105c494f2 100644
--- a/engines/saga2/tile.h
+++ b/engines/saga2/tile.h
@@ -765,13 +765,14 @@ struct RipTable {
 	MetaTileID  metaID;
 	uint16      ripID;
 	int16       zTable[kPlatformWidth][kPlatformWidth];
+	int _index;
 
 	enum {
 		kRipTableSize = 25
 	};
 
 	//  Constructor
-	RipTable(void) : metaID(NoMetaTile), ripID(0) {
+	RipTable(void) : metaID(NoMetaTile), ripID(0), _index(-1) {
 		for (int i = 0; i < kPlatformWidth; i++)
 			for (int j = 0; j < kPlatformWidth; j++)
 				zTable[i][j] = 0;




More information about the Scummvm-git-logs mailing list