[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