From 56d5ae7c0e8891355452cd29f3b0dede934c7d82 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 11 May 2015 07:23:35 -0700 Subject: Fix argument count checking regression. * eval.c (apply): Revert some changes from 2015-03-13 which cause the too many arguments case not to be diagnosed. --- ChangeLog | 8 ++++++++ eval.c | 10 ++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 130076f9..9bfabebe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2015-05-11 Kaz Kylheku + + Fix argument count checking regression. + + * eval.c (apply): Revert some changes from 2015-03-13 + which cause the too many arguments case not to be + diagnosed. + 2015-05-10 Kaz Kylheku * place.tl (errno): Support (errno) form as place. diff --git a/eval.c b/eval.c index c4b6bcbb..1a83aff6 100644 --- a/eval.c +++ b/eval.c @@ -677,14 +677,16 @@ val apply(val fun, val arglist, val ctx_form) for (; arglist && p < arg + APPLY_ARGS; arglist = cdr(arglist)) *p++ = car(arglist); - if (arglist) - eval_error(ctx_form, lit("~s: too many arguments"), - ctx, nao); + nargs = p - arg; - if ((nargs = p - arg) < reqargs) + if (nargs < reqargs) eval_error(ctx_form, lit("~s: missing required arguments"), ctx, nao); + if (nargs > fixparam) + eval_error(ctx_form, lit("~s: too many arguments"), + ctx, nao); + for (; nargs < fixparam; nargs++) *p++ = colon_k; -- cgit v1.2.3