[Scummvm-cvs-logs] CVS: scummvm/scumm object.cpp,1.130,1.131
Max Horn
fingolfin at users.sourceforge.net
Thu Jun 26 06:56:17 CEST 2003
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv14514
Modified Files:
object.cpp
Log Message:
paranoia fix for getOBCDFromObject, in casegetResourceAddress returns 0
Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.130
retrieving revision 1.131
diff -u -d -r1.130 -r1.131
--- object.cpp 26 Jun 2003 01:46:41 -0000 1.130
+++ object.cpp 26 Jun 2003 13:55:01 -0000 1.131
@@ -927,6 +927,7 @@
byte *Scumm::getOBCDFromObject(int obj) {
int i;
+ byte *ptr;
if (_objectOwnerTable[obj] != OF_OWNER_ROOM) {
for (i = 0; i < _maxInventoryItems; i++) {
@@ -936,12 +937,15 @@
} else {
for (i = (_numLocalObjects-1); i > 0; --i) {
if (_objs[i].obj_nr == obj) {
- if (_objs[i].fl_object_index)
- return getResourceAddress(rtFlObject, _objs[i].fl_object_index) + 8;
- if (_version == 8)
- return getResourceAddress(rtRoomScripts, _roomResource) + _objs[i].OBCDoffset;
+ if (_objs[i].fl_object_index) {
+ assert(_objs[i].OBCDoffset == 8);
+ ptr = getResourceAddress(rtFlObject, _objs[i].fl_object_index);
+ } else if (_version == 8)
+ ptr = getResourceAddress(rtRoomScripts, _roomResource);
else
- return getResourceAddress(rtRoom, _roomResource) + _objs[i].OBCDoffset;
+ ptr = getResourceAddress(rtRoom, _roomResource);
+ assert(ptr);
+ return ptr + _objs[i].OBCDoffset;
}
}
}
@@ -1044,7 +1048,7 @@
error("findObjectInRoom foCheckAlreadyLoaded NYI for GF_OLD_BUNDLE (id = %d, room = %d)", id, room);
}
fo->obcd = obcdptr = getOBCDFromObject(id);
- assert((const byte *)obcdptr > (byte *)256);
+ assert(obcdptr);
fo->obim = obimptr = obcdptr + RES_SIZE(obcdptr);
fo->cdhd = (const CodeHeader *)findResourceData(MKID('CDHD'), obcdptr);
fo->imhd = (const ImageHeader *)findResourceData(MKID('IMHD'), obimptr);
More information about the Scummvm-git-logs
mailing list