From bb1c722a0b2b9e35f21ddef8109c443d6b69a620 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Wed, 21 Jul 2010 17:42:51 +0000 Subject: SCI: adding workaround for sq3 fixing off-by-one error when initializing script 93 svn-id: r51091 --- engines/sci/engine/script.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'engines') diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp index 049ea9247b..eb6ff95a3d 100644 --- a/engines/sci/engine/script.cpp +++ b/engines/sci/engine/script.cpp @@ -434,16 +434,17 @@ void Script::initialiseClasses(SegManager *segMan) { } if (isClass) { - // WORKAROUND for an invalid species access in the demo of LSL2 + // WORKAROUNDs for off-by-one script errors if (g_sci->getGameId() == GID_LSL2 && g_sci->isDemo() && species == (int)segMan->classTableSize()) segMan->resizeClassTable(segMan->classTableSize() + 1); - // WORKAROUND for an invalid species access in LSL3 script 500 if (g_sci->getGameId() == GID_LSL3 && !g_sci->isDemo() && _nr == 500 && species == (int)segMan->classTableSize()) segMan->resizeClassTable(segMan->classTableSize() + 1); + if (g_sci->getGameId() == GID_SQ3 && !g_sci->isDemo() && _nr == 93 && species == (int)segMan->classTableSize()) + segMan->resizeClassTable(segMan->classTableSize() + 1); if (species < 0 || species >= (int)segMan->classTableSize()) - error("Invalid species %d(0x%x) not in interval [0,%d) while instantiating script %d\n", - species, species, segMan->classTableSize(), _nr); + error("Invalid species %d(0x%x) unknown max %d(0x%x) while instantiating script %d\n", + species, species, segMan->classTableSize(), segMan->classTableSize(), _nr); SegmentId segmentId = segMan->getScriptSegment(_nr); segMan->setClassOffset(species, make_reg(segmentId, classpos)); -- cgit v1.2.3