From bb7b66b5ba5d9dd7f3be86ffdea20e447763c066 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Tue, 23 Aug 2011 01:49:11 +0900 Subject: [PATCH] don't generate a tail-jump with mis-matched param lengths --- vm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vm.c b/vm.c index 9cb57c86..5ba69d59 100644 --- a/vm.c +++ b/vm.c @@ -416,7 +416,9 @@ static void generate_app (sexp ctx, sexp name, sexp loc, sexp lam, sexp app) { #if SEXP_USE_TAIL_JUMPS else if (sexp_context_tailp(ctx) && sexp_refp(sexp_car(app)) && name == sexp_ref_name(sexp_car(app)) - && loc == sexp_ref_loc(sexp_car(app))) + && loc == sexp_ref_loc(sexp_car(app)) + && (sexp_length(ctx, sexp_cdr(app)) + == sexp_length(ctx, sexp_lambda_params(lam)))) generate_tail_jump(ctx, name, loc, lam, app); #endif else