[Scummvm-cvs-logs] CVS: scummvm/scumm script_v7he.cpp,2.130,2.131

kirben kirben at users.sourceforge.net
Wed Mar 2 20:55:10 CET 2005


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19653/scumm

Modified Files:
	script_v7he.cpp 
Log Message:

Fix compare string.


Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.130
retrieving revision 2.131
diff -u -d -r2.130 -r2.131
--- script_v7he.cpp	2 Mar 2005 10:53:14 -0000	2.130
+++ script_v7he.cpp	3 Mar 2005 04:54:23 -0000	2.131
@@ -888,44 +888,32 @@
 }
 
 void ScummEngine_v70he::o70_compareString() {
-	byte *addr, *addr2;
-	int i = 0;
-
-	int id = pop();
-	int id2 = pop();
-
-	addr = getStringAddress(id);
-	if (!addr)
-		error("o70_compareString: Reference to zeroed array pointer (%d)", id);
+	int result;
 
-	addr2 = getStringAddress(id2);
-	if (!addr2)
-		error("o70_compareString: Reference to zeroed array pointer (%d)", id);
+	int array1 = pop();
+	int array2 = pop();
 
-	while(1) {
-		if (*addr != *addr2)
-			break;
-		if (*addr2 == 0) {
-			push(0);
-			return;
-		}
+	byte *string1 = getStringAddress(array1);
+	if (!string1)
+		error("o70_compareString: Reference to zeroed array pointer (%d)", array1);
 
-		addr++;
-		addr2++;
+	byte *string2 = getStringAddress(array2);
+	if (!string2)
+		error("o70_compareString: Reference to zeroed array pointer (%d)", array2);
 
-		if (*addr != *addr2)
-			break;
-		if (*addr2 == 0) {
+	while (*string1 == *string2) {
+		if (*string2 == 0) {
 			push(0);
 			return;
 		}
 
-		addr++;
-		addr2++;
+		string1++;
+		string2++;
 	}
 
-	push (i);
-	debug(1,"o70_compareString (%d, %d, %d)", id, id2, i);
+	result = (*string1 > *string2) ? -1 : 1;
+	push(result);
+	debug(1,"o70_compareString (%d, %d, %d)", array1, array2, result);
 }
 
 void ScummEngine_v70he::o70_readINI() {





More information about the Scummvm-git-logs mailing list