diff --git a/vm.c b/vm.c index c7aa845d..784f4b22 100644 --- a/vm.c +++ b/vm.c @@ -385,7 +385,9 @@ static void generate_tail_jump (sexp ctx, sexp name, sexp loc, sexp lam, sexp ap /* jump */ emit(ctx, SEXP_OP_JUMP); - emit_word(ctx, (sexp_uint_t)-sexp_context_pos(ctx)-1); + emit_word(ctx, (sexp_uint_t) (-sexp_context_pos(ctx) - 1 + + (sexp_pairp(sexp_lambda_locals(lam)) + ? 1 + sizeof(sexp) : 0))); sexp_context_tailp(ctx) = 1; sexp_gc_release3(ctx);