[Scummvm-git-logs] scummvm master -> 7361da9fdcad566a46d24e2b32711173039482d5

dreammaster dreammaster at scummvm.org
Sat Nov 18 02:52:19 CET 2017


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:
7361da9fdc XEEN: Fix Coverity identified problems


Commit: 7361da9fdcad566a46d24e2b32711173039482d5
    https://github.com/scummvm/scummvm/commit/7361da9fdcad566a46d24e2b32711173039482d5
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-11-17T20:52:18-05:00

Commit Message:
XEEN: Fix Coverity identified problems

Changed paths:
    engines/xeen/interface_map.cpp
    engines/xeen/map.cpp
    engines/xeen/party.cpp
    engines/xeen/scripts.cpp
    engines/xeen/spells.cpp


diff --git a/engines/xeen/interface_map.cpp b/engines/xeen/interface_map.cpp
index 5d87151..249a877 100644
--- a/engines/xeen/interface_map.cpp
+++ b/engines/xeen/interface_map.cpp
@@ -4402,6 +4402,7 @@ void InterfaceMap::drawOutdoors() {
 	const int TERRAIN_INDEXES4[5] = { 5, 9, 7, 0, 4 };
 
 	// Loops to set draw entries for the terrain
+	assert(map._currentWall != INVALID_CELL);
 	for (int idx = 0; idx < 9; ++idx) {
 		map.getCell(TERRAIN_INDEXES1[idx]);
 		SpriteResource &spr = map._wallSprites._surfaces[map._currentWall];
diff --git a/engines/xeen/map.cpp b/engines/xeen/map.cpp
index b9b674c..028ca4b 100644
--- a/engines/xeen/map.cpp
+++ b/engines/xeen/map.cpp
@@ -1494,7 +1494,7 @@ int Map::getCell(int idx) {
 			++_mazeDataIndex;
 	}
 
-	assert(ABS(pt.x) < 16 && ABS(pt.y) < 16);
+	assert(pt.x >= 0 && pt.x < 16 && pt.y >= 0 && pt.y < 16);
 	int wallData = _mazeData[_mazeDataIndex]._wallData[pt.y][pt.x]._data;
 	if (_isOutdoors) {
 		if (mapId) {
diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index 71b1cb3..25a7c51 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -288,8 +288,10 @@ void Party::changeTime(int numMinutes) {
 					!player._conditions[ERADICATED]) {
 				for (int statNum = 0; statNum < TOTAL_STATS; ++statNum) {
 					int statVal = player.getStat((Attribute)statNum);
-					if (statVal < 1)
+					if (statVal < 1) {
 						player._conditions[DEAD] = 1;
+						killed = true;
+					}
 				}
 			}
 
@@ -1036,6 +1038,7 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
 		ps._tempAge += giveVal;
 		break;
 	case 13:
+		assert(giveVal < 18);
 		ps._skills[giveVal]++;
 		break;
 	case 15:
@@ -1056,6 +1059,7 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
 		} else if (giveVal == 6) {
 			ps._conditions[giveVal] = 1;
 		} else {
+			assert(giveVal < 16);
 			ps._conditions[giveVal]++;
 		}
 
@@ -1368,12 +1372,15 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
 		_gold += _vm->getRandomNumber(1, giveVal);
 		break;
 	case 103:
+		assert(takeVal < 128);
 		_worldFlags[takeVal] = true;
 		break;
 	case 104:
+		assert(giveVal < 32);
 		_quests[files._isDarkCc][giveVal] = true;
 		break;
 	case 107:
+		assert(takeVal < 24);
 		_characterFlags[ps._rosterId][takeVal] = true;
 		break;
 	default:
diff --git a/engines/xeen/scripts.cpp b/engines/xeen/scripts.cpp
index ea4fc1c..a5984e3 100644
--- a/engines/xeen/scripts.cpp
+++ b/engines/xeen/scripts.cpp
@@ -1478,13 +1478,7 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
 				}
 			}
 		} else {
-			int baseFlag = 8 * (6 + mask);
-			for (int idx = 0; idx < 8; ++idx) {
-				if (party._gameFlags[0][baseFlag + idx]) {
-					v = mask;
-					break;
-				}
-			}
+			error("Invalid id");
 		}
 		break;
 	case 25:
@@ -1694,8 +1688,8 @@ bool Scripts::ifProc(int action, uint32 mask, int mode, int charIndex) {
 		break;
 	case 104:
 		// Get value of quest flag
-		v = party._quests[mask + (_vm->_files->_isDarkCc ? 30 : 0)] ?
-			mask : 0xffffffff;
+		v = (_vm->_files->_isDarkCc ? party._quests[1][mask - 2] :
+			party._quests[0][mask]) ? mask : 0xffffffff;
 		break;
 	case 105:
 		// Test number of Megacredits in party. Only used by King's Engineer in Castle Burlock
diff --git a/engines/xeen/spells.cpp b/engines/xeen/spells.cpp
index 5c5a62e..2f9fe46 100644
--- a/engines/xeen/spells.cpp
+++ b/engines/xeen/spells.cpp
@@ -449,10 +449,11 @@ void Spells::detectMonster() {
 				MazeMonster &monster = map._mobData._monsters[monIndex];
 				Common::Point pt = party._mazePosition + Common::Point(xDiff, yDiff);
 				if (monster._position == pt) {
-					if (++grid[yDiff][xDiff] > 3)
-						grid[yDiff][xDiff] = 3;
+					int &gridEntry = grid[yDiff + 3][xDiff + 3];
+					if (++gridEntry > 3)
+						gridEntry = 3;
 
-					sprites.draw(w, grid[yDiff][xDiff], Common::Point(xDiff * 9 + 244,
+					sprites.draw(w, gridEntry, Common::Point(xDiff * 9 + 244,
 						yDiff * 7 + 81));
 				}
 			}





More information about the Scummvm-git-logs mailing list