Fixed inaccurate compiler error when ternary operator is involved (bug 5711, r=dvander).
Fixed inaccurate compiler error when ternary operator is involved (
bug 5711, r=dvander).
1.1 --- a/sourcepawn/compiler/sc3.c Thu Jul 18 15:50:57 2013 -0400
1.2 +++ b/sourcepawn/compiler/sc3.c Thu Jul 18 17:59:24 2013 -0400
1.3 @@ -1331,13 +1331,15 @@
1.4 ldconst(lval2.constval,sPRI);
1.5 array1= (lval->ident==iARRAY || lval->ident==iREFARRAY);
1.6 array2= (lval2.ident==iARRAY || lval2.ident==iREFARRAY);
1.7 - if (array1 && !array2) {
1.8 + if (!array1 && array2) {
1.9 const char *ptr = "-unknown-";
1.10 - if (lval->sym != NULL && lval->sym->name != NULL)
1.11 + if (lval->sym != NULL && lval->sym->name != NULL)
1.12 ptr = lval->sym->name;
1.13 error(33,ptr); /* array must be indexed */
1.14 - } else if (!array1 && array2) {
1.15 - char *ptr=(lval2.sym->name!=NULL) ? lval2.sym->name : "-unknown-";
1.16 + } else if (array1 && !array2) {
1.17 + const char *ptr = "-unknown-";
1.18 + if (lval2.sym != NULL && lval2.sym->name != NULL)
1.19 + ptr = lval2.sym->name;
1.20 error(33,ptr); /* array must be indexed */
1.21 } /* if */
1.22 /* ??? if both are arrays, should check dimensions */