- did not accept arrays in 'if (a) ...'
- did not detect too few parameters in functions with ellipsis prototypes
{
int fund = (*expp)->ex_type->tp_fund;
+ if (fund == FUNCTION || fund == ARRAY) {
+ expr_warning(*expp, "%s operand to %s",
+ symbol2str(fund),
+ symbol2str(oper));
+ if (fund == FUNCTION) function2pointer(*expp);
+ else array2pointer(*expp);
+ }
#ifndef NOBITFIELD
+ else
if (fund == FIELD)
field2arith(expp);
#endif NOBITFIELD
} else
any2parameter(estack[ecnt]);
}
- if (pcnt >= 0 && !(pstack[0]->pl_flag & PL_ELLIPSIS))
+ if (pcnt > 0 || (pcnt == 0 && !(pstack[0]->pl_flag & PL_ELLIPSIS)))
expr_error(*expp, "fewer parameters than specified in prototype");
-
} else {
if (pl && !(pl->pl_flag & PL_VOID))
expr_error(*expp, "fewer parameters than specified in prototype");