diff options
author | athrxx | 2011-12-27 21:50:07 +0100 |
---|---|---|
committer | athrxx | 2011-12-28 00:01:29 +0100 |
commit | a35550d200a9e19894571758afe992185c6c6176 (patch) | |
tree | 7aa18a17a5f850e6764def6482a86620c6bccbbc | |
parent | e6b6099d54c05a95530125e95da69a90aff4863d (diff) | |
download | scummvm-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.cpp | 3 | ||||
-rw-r--r-- | engines/kyra/gui_eob.cpp | 8 |
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; |