[Scummvm-cvs-logs] CVS: scummvm/scumm script_v2.cpp,2.118,2.119

James Brown ender at users.sourceforge.net
Thu May 22 23:36:05 CEST 2003


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

Modified Files:
	script_v2.cpp 
Log Message:
Patch #742132: o2_setobjectname script overwrite fix


Index: script_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v2.cpp,v
retrieving revision 2.118
retrieving revision 2.119
diff -u -d -r2.118 -r2.119
--- script_v2.cpp	23 May 2003 01:14:29 -0000	2.118
+++ script_v2.cpp	23 May 2003 06:35:47 -0000	2.119
@@ -1292,7 +1292,7 @@
 
 void Scumm_v2::o2_setObjectName() {
 	int obj = getVarOrDirectWord(0x80);
-	int size;
+	int size = 0;
 	int a;
 	int i = 0;
 	byte *name = NULL;
@@ -1303,7 +1303,6 @@
 		a = fetchScriptByte();
 		work[i++] = a;
 	} while (a);
-	work[i] = 0;
 
 	if (obj < _numActors)
 		error("Can't set actor %d name with new-name-of", obj);
@@ -1312,19 +1311,21 @@
 	if (name == NULL)
 		return;	// Silently abort
 
-	byte *objptr;
-	byte offset = 0;
-
-	objptr = getOBCDFromObject(obj);
-	offset = *(objptr + 14);
-	size = READ_LE_UINT16(objptr) - offset;
+  while(name[size++])
+    ;
 
-	if (i >= size) {
+	if (i > size) {
 		warning("New name of object %d too long (old *%s* new *%s*)", obj, name, work);
-		i = size - 1;
+		i = size;
 	}
 
-	memcpy(name, work, i + 1);
+  while (i < size) {
+    work[i-1] = '@';
+    i++;
+  }
+  work[i-1] = 0;
+
+	memcpy(name, work, i);
 	redrawV2Inventory();
 }
 





More information about the Scummvm-git-logs mailing list