Fixed two bugs:

- did not accept arrays in 'if (a) ...'
- did not detect too few parameters in functions with ellipsis prototypes
This commit is contained in:
ceriel 1991-07-01 14:10:15 +00:00
parent c3c1b918f0
commit 34d6b23ba6
2 changed files with 9 additions and 2 deletions

View file

@ -489,7 +489,15 @@ opnd2logical(expp, oper)
{
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

View file

@ -465,9 +465,8 @@ call_proto(expp)
} 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");