diff --git a/src/frontend/define.c b/src/frontend/define.c index 108966c87..29d9056c6 100644 --- a/src/frontend/define.c +++ b/src/frontend/define.c @@ -395,16 +395,16 @@ ntharg(int num, struct pnode *args) static int numargs(struct pnode *args) { - struct pnode *tp; - int arity = 0; + int arity; - if (args) - arity = 1; + if (!args) + return 0; - for (tp = args; tp && tp->pn_op && (tp->pn_op->op_num == PT_OP_COMMA); tp = - tp->pn_right) - arity++; + for (arity = 1; args; args = args->pn_right, arity++) + if (!(args->pn_op && (args->pn_op->op_num == PT_OP_COMMA))) + return arity; + // note: a trailing NULL pn_right will be counted too return arity; }