[Scummvm-cvs-logs] SF.net SVN: scummvm:[50271] scummvm/trunk/engines/sci/engine

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Fri Jun 25 18:11:01 CEST 2010


Revision: 50271
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50271&view=rev
Author:   fingolfin
Date:     2010-06-25 16:11:00 +0000 (Fri, 25 Jun 2010)

Log Message:
-----------
SCI: Restrict some 'error' exceptions to the places they occur; cleanup

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/segment.cpp
    scummvm/trunk/engines/sci/engine/static_selectors.cpp

Modified: scummvm/trunk/engines/sci/engine/segment.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/segment.cpp	2010-06-25 16:08:34 UTC (rev 50270)
+++ scummvm/trunk/engines/sci/engine/segment.cpp	2010-06-25 16:11:00 UTC (rev 50271)
@@ -464,10 +464,16 @@
 	if (ret.maxSize > 0) {
 		ret.reg = &_locals[pointer.offset / 2];
 	} else {
-		// Happens in two places during the intro of LB2CD, both from kMemory(peek):
-		// - room 160: Heap 160 has 83 local variables (0-82), and the game asks for variables at indices 83 - 90 too
-		// - room 220: Heap 220 has 114 local variables (0-113), and the game asks for variables at indices 114-120 too
-		warning("LocalVariables::dereference: Offset at end or out of bounds %04x:%04x", PRINT_REG(pointer));
+		if ((g_sci->getEngineState()->currentRoomNumber() == 660 || g_sci->getEngineState()->currentRoomNumber() == 660)
+			&& g_sci->getGameId() == "laurabow2") {
+			// Happens in two places during the intro of LB2CD, both from kMemory(peek):
+			// - room 160: Heap 160 has 83 local variables (0-82), and the game
+			//   asks for variables at indices 83 - 90 too.
+			// - room 220: Heap 220 has 114 local variables (0-113), and the
+			//   game asks for variables at indices 114-120 too.
+		} else {
+			error("LocalVariables::dereference: Offset at end or out of bounds %04x:%04x", PRINT_REG(pointer));
+		}
 		ret.reg = 0;
 	}
 	return ret;
@@ -514,8 +520,11 @@
 	if (isValidOffset(pointer.offset))
 		ret.raw = (byte *)(_strings[pointer.offset]._value);
 	else {
-		// This occurs in KQ5CD when interacting with certain objects
-		warning("SystemStrings::dereference(): Attempt to dereference invalid pointer %04x:%04x", PRINT_REG(pointer));
+		if (g_sci->getGameId() == "kq5") {
+			// This occurs in KQ5CD when interacting with certain objects
+		} else {
+			error("SystemStrings::dereference(): Attempt to dereference invalid pointer %04x:%04x", PRINT_REG(pointer));
+		}
 	}
 
 	return ret;

Modified: scummvm/trunk/engines/sci/engine/static_selectors.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/static_selectors.cpp	2010-06-25 16:08:34 UTC (rev 50270)
+++ scummvm/trunk/engines/sci/engine/static_selectors.cpp	2010-06-25 16:11:00 UTC (rev 50271)
@@ -150,10 +150,10 @@
 		}
 
 		for (const SelectorRemap *selectorRemap = sciSelectorRemap; selectorRemap->slot; ++selectorRemap) {
-			uint32 slot = selectorRemap->slot;
-			if (selectorRemap->slot >= names.size())
-				names.resize(selectorRemap->slot + 1);
 			if (getSciVersion() >= selectorRemap->minVersion && getSciVersion() <= selectorRemap->maxVersion) {
+				const uint32 slot = selectorRemap->slot;
+				if (slot >= names.size())
+					names.resize(slot + 1);
 				names[slot] = selectorRemap->name;
 			}
 		}


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list