aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2010-11-22 10:23:53 +0000
committerFilippos Karapetis2010-11-22 10:23:53 +0000
commiteba5c441b27d0c7ec82b4d7abd0f51bfee2dc8ba (patch)
treef2872e546a76befbb818c621b08120024cf4c9f2 /engines
parentd8afddac634a089fd75f1c51a49b7ee1a2929401 (diff)
downloadscummvm-rg350-eba5c441b27d0c7ec82b4d7abd0f51bfee2dc8ba.tar.gz
scummvm-rg350-eba5c441b27d0c7ec82b4d7abd0f51bfee2dc8ba.tar.bz2
scummvm-rg350-eba5c441b27d0c7ec82b4d7abd0f51bfee2dc8ba.zip
SCI: Fixed bug #3044050 - "SQ4FLOPPY: Crash while flying in Skate-o-Rama"
Fixed Object::locateVarSelector() for SCI0-SCI1 games, as it wasn't checking the class for object variables svn-id: r54415
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/engine/object.cpp8
1 files changed, 2 insertions, 6 deletions
diff --git a/engines/sci/engine/object.cpp b/engines/sci/engine/object.cpp
index e0d366797e..12b2e36d31 100644
--- a/engines/sci/engine/object.cpp
+++ b/engines/sci/engine/object.cpp
@@ -91,13 +91,9 @@ int Object::locateVarSelector(SegManager *segMan, Selector slc) const {
const byte *buf = 0;
uint varnum = 0;
- if (getSciVersion() <= SCI_VERSION_1_LATE) {
- varnum = getVarCount();
- int selector_name_offset = varnum * 2 + kOffsetSelectorSegment;
- buf = _baseObj + selector_name_offset;
- } else if (getSciVersion() >= SCI_VERSION_1_1 && getSciVersion() <= SCI_VERSION_2_1) {
+ if (getSciVersion() <= SCI_VERSION_2_1) {
const Object *obj = getClass(segMan);
- varnum = obj->getVariable(1).toUint16();
+ varnum = getSciVersion() <= SCI_VERSION_1_LATE ? getVarCount() : obj->getVariable(1).toUint16();
buf = (const byte *)obj->_baseVars;
} else if (getSciVersion() == SCI_VERSION_3) {
varnum = _variables.size();