[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