fixed amb1400 - invalid dereference caused crash in ternary operators
authorDavid Anderson <dvander@alliedmods.net>
Tue Jan 22 17:30:58 2008 +0000 (2008-01-22)
changeset 18564e4cff94766a
parent 1855 7871fb255eb5
child 1857 a9f06e014a7b
fixed amb1400 - invalid dereference caused crash in ternary operators
sourcepawn/compiler/sc3.c
     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        }