fixed
amb1400 - invalid dereference caused crash in ternary operators
1.1 --- a/sourcepawn/compiler/sc3.c Tue Jan 22 17:18:15 2008 +0000
1.2 +++ b/sourcepawn/compiler/sc3.c Tue Jan 22 17:30:58 2008 +0000
1.3 @@ -1329,7 +1329,9 @@
1.4 array1= (lval->ident==iARRAY || lval->ident==iREFARRAY);
1.5 array2= (lval2.ident==iARRAY || lval2.ident==iREFARRAY);
1.6 if (array1 && !array2) {
1.7 - char *ptr=(lval->sym->name!=NULL) ? lval->sym->name : "-unknown-";
1.8 + const char *ptr = "-unknown-";
1.9 + if (lval->sym != NULL && lval->sym->name != NULL)
1.10 + ptr = lval->sym->name;
1.11 error(33,ptr); /* array must be indexed */
1.12 } else if (!array1 && array2) {
1.13 char *ptr=(lval2.sym->name!=NULL) ? lval2.sym->name : "-unknown-";
1.14 @@ -1570,7 +1572,7 @@
1.15 if (level>sym->dim.array.level+1) {
1.16 error(28,sym->name); /* invalid subscript */
1.17 } else if (level==sym->dim.array.level+1) {
1.18 - lval->constval= (idxsym!=NULL && idxsym->dim.array.length>0) ? idxsym->dim.array.length : 1;
1.19 + lval->constval=(idxsym!=NULL && idxsym->dim.array.length>0) ? idxsym->dim.array.length : 1;
1.20 } else {
1.21 lval->constval=array_levelsize(sym,level);
1.22 }