[Scummvm-cvs-logs] CVS: scummvm/scumm script_v6.cpp,1.399,1.400

Travis Howell kirben at users.sourceforge.net
Thu Sep 16 06:54:45 CEST 2004


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

Modified Files:
	script_v6.cpp 
Log Message:

Correct array size read


Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.399
retrieving revision 1.400
diff -u -d -r1.399 -r1.400
--- script_v6.cpp	16 Sep 2004 12:54:32 -0000	1.399
+++ script_v6.cpp	16 Sep 2004 13:51:03 -0000	1.400
@@ -2996,7 +2996,7 @@
 void ScummEngine_v6::o6_pickVarRandom() {
 	int num;
 	int args[100];
-	int var_C, var_A;
+	int dim1;
 
 	num = getStackList(args, ARRAYSIZE(args));
 	int value = fetchScriptWord();
@@ -3018,18 +3018,12 @@
 
 	num = readArray(value, 0, 0);
 
-	byte *ptr = getResourceAddress(rtString, readVar(value));
-	if (_version >= 7) {
-		var_A = READ_LE_UINT32(ptr + 4);
-		var_C = READ_LE_UINT32(ptr + 8);
-	} else {
-		var_A = READ_LE_UINT16(ptr + 2);
-		var_C = READ_LE_UINT16(ptr + 4);
-	}
+	ArrayHeader *ah = (ArrayHeader *)getResourceAddress(rtString, readVar(value));
+	dim1 = FROM_LE_16(ah->dim1) - 1;
 
-	if (var_A-1 <= num) {
+	if (dim1 <= num) {
 		int16 var_2 = readArray(value, 0, num - 1);
-		shuffleArray(value, 1, var_A - 1);
+		shuffleArray(value, 1, dim1);
 		if (readArray(value, 0, 1) == var_2) {
 			num = 2;
 		} else {





More information about the Scummvm-git-logs mailing list