From d4f3997bdae9e20ea502ed20293e3aed992c00e4 Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Sun, 23 Feb 2014 01:14:29 +0400 Subject: [PATCH] Fix MULTIPLE-VALUE-BIND not evaluating values-form. (let (x) (multiple-value-bind () (setf x t)) x) returned NIL because the values-form was discarded. --- src/c/compiler.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/c/compiler.d b/src/c/compiler.d index 799a181eb..28a812e13 100644 --- a/src/c/compiler.d +++ b/src/c/compiler.d @@ -1672,16 +1672,16 @@ static int c_multiple_value_bind(cl_env_ptr env, cl_object args, int flags) { cl_object vars = pop(&args); - cl_object value = pop(&args); int n = ecl_length(vars); switch (n) { case 0: return c_locally(env, args, flags); case 1: vars = ECL_CONS_CAR(vars); - vars = ecl_list1(cl_list(2, vars, value)); + vars = ecl_list1(cl_list(2, vars, pop(&args))); return c_leta(env, cl_listX(2, vars, args), flags); default: { + cl_object value = pop(&args); cl_object old_variables = env->c_env->variables; cl_object body = c_process_declarations(args); cl_object specials = env->values[3];