From 857ea3d9287effeb01d6dbd47eb89d3e68fc8ece Mon Sep 17 00:00:00 2001 From: Daniel Kochmanski Date: Mon, 12 Feb 2018 16:01:26 +0100 Subject: [PATCH] interpreter: don't create closures for null lexenv We have created empty closure for instance when flet was in null lexenv. Check for Null in close_over and create t_bclosure only for non-null lexical environments. --- src/c/interpreter.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/c/interpreter.d b/src/c/interpreter.d index 0a0aaad8d..aef65a296 100644 --- a/src/c/interpreter.d +++ b/src/c/interpreter.d @@ -206,9 +206,11 @@ _ecl_bclosure_dispatch_vararg(cl_narg narg, ...) static cl_object close_around(cl_object fun, cl_object lex) { - cl_object v = ecl_alloc_object(t_bclosure); + cl_object v; + if (Null(lex)) return fun; if (ecl_t_of(fun) != t_bytecodes) FEerror("!!!", 0); + v = ecl_alloc_object(t_bclosure); v->bclosure.code = fun; v->bclosure.lex = lex; v->bclosure.entry = _ecl_bclosure_dispatch_vararg;