[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