[Scummvm-git-logs] scummvm master -> 0cde83ea01cfa1bfd3253bcfa3a7af0b7af5ad02

dreammaster dreammaster at scummvm.org
Mon Apr 2 04:35:14 CEST 2018


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:
0cde83ea01 XEEN: Fix Coverity reported overruns


Commit: 0cde83ea01cfa1bfd3253bcfa3a7af0b7af5ad02
    https://github.com/scummvm/scummvm/commit/0cde83ea01cfa1bfd3253bcfa3a7af0b7af5ad02
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2018-04-01T22:35:14-04:00

Commit Message:
XEEN: Fix Coverity reported overruns

Changed paths:
    engines/xeen/dialogs/dialogs_quests.cpp
    engines/xeen/item.cpp
    engines/xeen/party.h
    engines/xeen/resources.h


diff --git a/engines/xeen/dialogs/dialogs_quests.cpp b/engines/xeen/dialogs/dialogs_quests.cpp
index 8f8ebe7..239793e 100644
--- a/engines/xeen/dialogs/dialogs_quests.cpp
+++ b/engines/xeen/dialogs/dialogs_quests.cpp
@@ -45,6 +45,7 @@ void Quests::execute() {
 	bool headerShown = false;
 	int topRow = 0;
 	const char **questItems = (g_vm->getGameID() == GType_Swords) ? Res.QUEST_ITEM_NAMES_SWORDS : Res.QUEST_ITEM_NAMES;
+	int itemsCount = (g_vm->getGameID() == GType_Swords) ? TOTAL_QUEST_ITEMS_SWORDS : TOTAL_QUEST_ITEMS;
 
 	addButtons();
 	loadQuestNotes();
@@ -67,12 +68,12 @@ void Quests::execute() {
 
 		switch (mode) {
 		case QUEST_ITEMS:
-			for (int idx = 0; idx < TOTAL_QUEST_ITEMS; ++idx)
+			for (int idx = 0; idx < itemsCount; ++idx)
 				lines[idx] = "\b \b*";
 
 			count = 0;
 			headerShown = false;
-			for (int idx = 0; idx < TOTAL_QUEST_ITEMS; ++idx) {
+			for (int idx = 0; idx < itemsCount; ++idx) {
 				if (party._questItems[idx]) {
 					if (!count && !headerShown && idx < 35) {
 						lines[count++] = Res.CLOUDS_OF_XEEN_LINE;
@@ -116,7 +117,7 @@ void Quests::execute() {
 			break;
 
 		case CURRENT_QUESTS:
-			for (int idx = 0; idx < TOTAL_QUEST_ITEMS; ++idx)
+			for (int idx = 0; idx < itemsCount; ++idx)
 				lines[idx] = "";
 
 			count = 0;
diff --git a/engines/xeen/item.cpp b/engines/xeen/item.cpp
index a85f5ab..6a37fa1 100644
--- a/engines/xeen/item.cpp
+++ b/engines/xeen/item.cpp
@@ -89,12 +89,16 @@ const char *XeenItem::getItemName(ItemCategory category, uint id) {
 	if (id < 82) {
 		switch (category) {
 		case CATEGORY_WEAPON:
+			assert(id < 41);
 			return Res.WEAPON_NAMES[id];
 		case CATEGORY_ARMOR:
+			assert(id < 14);
 			return Res.ARMOR_NAMES[id];
 		case CATEGORY_ACCESSORY:
+			assert(id < 11);
 			return Res.ACCESSORY_NAMES[id];
 		default:
+			assert(id < 22);
 			return Res.MISC_NAMES[id];
 		}
 	} else {
@@ -108,6 +112,7 @@ const char *XeenItem::getItemName(ItemCategory category, uint id) {
 		case CATEGORY_ACCESSORY:
 			return questItems[id - 82 + 35 + 14];
 		default:
+			assert(g_vm->getGameID() != GType_Swords);
 			return questItems[id - 82 + 35 + 14 + 11];
 		}
 	}
diff --git a/engines/xeen/party.h b/engines/xeen/party.h
index ef3a67f..b0be1a2 100644
--- a/engines/xeen/party.h
+++ b/engines/xeen/party.h
@@ -53,6 +53,7 @@ enum PartyBank {
 #define MAX_PARTY_COUNT 8
 #define TOTAL_STATS 7
 #define TOTAL_QUEST_ITEMS 85
+#define TOTAL_QUEST_ITEMS_SWORDS 51
 #define TOTAL_QUEST_FLAGS 56
 #define MAX_TREASURE_ITEMS 10
 
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index 007aaa3..bfd5cce 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -306,7 +306,7 @@ public:
 	const char *ITEM_CURSED;
 	const char *ITEM_OF;
 	const char *BONUS_NAMES[7];
-	const char *WEAPON_NAMES[35];
+	const char *WEAPON_NAMES[41];
 	const char *ARMOR_NAMES[14];
 	const char *ACCESSORY_NAMES[11];
 	const char *MISC_NAMES[22];





More information about the Scummvm-git-logs mailing list