triggers an error for issue #129
cond ? array1 : array2 Triggers an array if the size of array1 and array2 do not match.
This commit is contained in:
parent
687d1ff017
commit
9e4a2b283f
@ -1063,6 +1063,7 @@ static int hier13(value *lval)
|
||||
int flab2=getlabel();
|
||||
value lval2={0};
|
||||
int array1,array2;
|
||||
int asize1 = -1, asize2 = -1; /* -1 indicates that the value is not an array */
|
||||
|
||||
if (lvalue) {
|
||||
rvalue(lval);
|
||||
@ -1118,6 +1119,17 @@ static int hier13(value *lval)
|
||||
error(33,ptr); /* array must be indexed */
|
||||
} /* if */
|
||||
/* ??? if both are arrays, should check dimensions */
|
||||
if (lval->ident == iARRAY)
|
||||
asize1 = (lval->sym == NULL) ? (lval->constval > 0 ? lval->constval : -lval->constval) : lval->sym->dim.array.length;
|
||||
if (lval->ident == iREFARRAY)
|
||||
asize1 = lval->sym->dim.array.length;
|
||||
if (lval2.ident == iARRAY)
|
||||
asize2 = (lval2.sym == NULL) ? (lval2.constval > 0 ? lval2.constval : -lval2.constval) : lval2.sym->dim.array.length;
|
||||
if (lval2.ident == iREFARRAY)
|
||||
asize2 = lval2.sym->dim.array.length;
|
||||
if (asize1 != -1 && asize2 != -1)
|
||||
if (asize1 != asize2)
|
||||
error(47);
|
||||
if (!matchtag(lval->tag,lval2.tag,FALSE))
|
||||
error(213); /* tagname mismatch ('true' and 'false' expressions) */
|
||||
setlabel(flab2);
|
||||
|
Loading…
x
Reference in New Issue
Block a user