[Scummvm-cvs-logs] CVS: scummvm/scumm object.cpp,1.35,1.36 resource.cpp,1.43,1.44 script_v8.cpp,2.69,2.70

Max Horn fingolfin at users.sourceforge.net
Fri Dec 27 11:49:03 CET 2002


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv13255

Modified Files:
	object.cpp resource.cpp script_v8.cpp 
Log Message:
like rtRoom, rtRoomScripts should never expire while the room they belong too is loaded; this fixes the crash when picking up the fishing rod

Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- object.cpp	27 Dec 2002 14:36:27 -0000	1.35
+++ object.cpp	27 Dec 2002 19:48:30 -0000	1.36
@@ -826,7 +826,7 @@
 {
 	int i, slot;
 	uint32 size;
-	byte *obcdptr, *ptr;
+	byte *ptr, *dst;
 	FindObjectInRoom foir;
 
 	debug(1, "Adding object %d from room %d into inventory", obj, room);
@@ -836,23 +836,22 @@
 		i = getObjectIndex(obj);
 		ptr = getResourceAddress(rtFlObject, _objs[i].fl_object_index) + 8;
 		size = READ_BE_UINT32_UNALIGNED(ptr + 4);
-		slot = getInventorySlot();
-		_inventory[slot] = obj;
-		createResource(rtInventory, slot, size);
-		ptr = getResourceAddress(rtFlObject, _objs[i].fl_object_index) + 8;
-		memcpy(getResourceAddress(rtInventory, slot), ptr, size);
 	} else {
 		findObjectInRoom(&foir, foCodeHeader, obj, room);
 		if (_features & GF_SMALL_HEADER)
 			size = READ_LE_UINT32(foir.obcd);
 		else
 			size = READ_BE_UINT32_UNALIGNED(foir.obcd + 4);
-		slot = getInventorySlot();
-		_inventory[slot] = obj;
-		createResource(rtInventory, slot, size);
-		obcdptr = getResourceAddress(rtRoom, room) - foir.roomptr + foir.obcd;
-		memcpy(getResourceAddress(rtInventory, slot), obcdptr, size);
+		ptr = foir.obcd;
 	}
+
+	slot = getInventorySlot();
+	_inventory[slot] = obj;
+	createResource(rtInventory, slot, size);
+
+	dst = getResourceAddress(rtInventory, slot);
+	assert(dst);
+	memcpy(dst, ptr, size);
 
 	CHECK_HEAP
 }

Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -d -r1.43 -r1.44
--- resource.cpp	27 Dec 2002 00:11:01 -0000	1.43
+++ resource.cpp	27 Dec 2002 19:48:30 -0000	1.44
@@ -1381,6 +1381,8 @@
 	switch (type) {
 	case rtRoom:
 		return _roomResource == (byte)i;
+	case rtRoomScripts:
+		return _roomResource == (byte)i;
 	case rtScript:
 		return isScriptInUse(i);
 	case rtCostume:

Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.69
retrieving revision 2.70
diff -u -d -r2.69 -r2.70
--- script_v8.cpp	27 Dec 2002 16:55:22 -0000	2.69
+++ script_v8.cpp	27 Dec 2002 19:48:30 -0000	2.70
@@ -1423,10 +1423,10 @@
 	case 34:	// queryQuit
 		warning("o6_kernelSetFunctions: queryQuit()");
 		break;
-	case 108:
+	case 108:	// buildPaletteShadow
 		setupShadowPalette(args[1], args[2], args[3], args[4], args[5], args[6]);
 		break;
-	case 109:
+	case 109:	// setPaletteShadow
 		setupShadowPalette(0, args[1], args[2], args[3], args[4], args[5]);
 		break;
 	case 115:	// getWalkBoxAt





More information about the Scummvm-git-logs mailing list