aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorathrxx2011-12-27 21:50:07 +0100
committerathrxx2011-12-28 00:01:29 +0100
commita35550d200a9e19894571758afe992185c6c6176 (patch)
tree7aa18a17a5f850e6764def6482a86620c6bccbbc
parente6b6099d54c05a95530125e95da69a90aff4863d (diff)
downloadscummvm-rg350-a35550d200a9e19894571758afe992185c6c6176.tar.gz
scummvm-rg350-a35550d200a9e19894571758afe992185c6c6176.tar.bz2
scummvm-rg350-a35550d200a9e19894571758afe992185c6c6176.zip
KYRA: (EOB) - fix invalid string access in EOB 1
(when entering the memorize/pray menu without having a mage/cleric)
-rw-r--r--engines/kyra/eobcommon.cpp3
-rw-r--r--engines/kyra/gui_eob.cpp8
2 files changed, 7 insertions, 4 deletions
diff --git a/engines/kyra/eobcommon.cpp b/engines/kyra/eobcommon.cpp
index bc01fead6b..304d1a4539 100644
--- a/engines/kyra/eobcommon.cpp
+++ b/engines/kyra/eobcommon.cpp
@@ -1059,6 +1059,9 @@ int EoBCoreEngine::countCharactersWithSpecificItems(int16 itemType, int16 itemVa
}
int EoBCoreEngine::checkInventoryForItem(int character, int16 itemType, int16 itemValue) {
+ if (character < 0 )
+ return -1;
+
for (int i = 0; i < 27; i++) {
uint16 inv = _characters[character].inventory[i];
if (!inv)
diff --git a/engines/kyra/gui_eob.cpp b/engines/kyra/gui_eob.cpp
index a80ef03201..512c13a977 100644
--- a/engines/kyra/gui_eob.cpp
+++ b/engines/kyra/gui_eob.cpp
@@ -3543,7 +3543,7 @@ int GUI_EoB::selectCharacterDialogue(int id) {
_vm->removeInputTop();
_charSelectRedraw = false;
- bool abort = false;
+ bool starvedUnconscious = false;
int count = 0;
int result = -1;
int found[6];
@@ -3558,7 +3558,7 @@ int GUI_EoB::selectCharacterDialogue(int id) {
continue;
if (id != 53 && (!_vm->_characters[i].food || !_vm->testCharacter(i, 4))) {
- abort = true;
+ starvedUnconscious = true;
} else {
found[i] = 0;
result = i;
@@ -3569,9 +3569,9 @@ int GUI_EoB::selectCharacterDialogue(int id) {
if (!count) {
int eid = 0;
if (id == 23)
- eid = abort ? 28 : 72;
+ eid = (starvedUnconscious || _vm->game() == GI_EOB1) ? 28 : 72;
else if (id == 26)
- eid = abort ? 27 : 73;
+ eid = (starvedUnconscious || _vm->game() == GI_EOB1) ? 27 : 73;
else if (id == 49)
eid = 52;