[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