Fixed two bugs:
authorceriel <none@none>
Mon, 1 Jul 1991 14:10:15 +0000 (14:10 +0000)
committerceriel <none@none>
Mon, 1 Jul 1991 14:10:15 +0000 (14:10 +0000)
- did not accept arrays in 'if (a) ...'
- did not detect too few parameters in functions with ellipsis prototypes

lang/cem/cemcom.ansi/arith.c
lang/cem/cemcom.ansi/proto.c

index 4e22217..0714f08 100644 (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
index 5325ad3..81e7fce 100644 (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");