summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-05-12 07:36:07 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-05-12 07:36:07 -0700
commitc9ad2400fa6e484951a1caedacfcae1175506a40 (patch)
treee2a07da2ecc71aa8b0975c4c1a08058cea70e248
parentea4b65ff500e829bc411a2dc666f9f0f85d3a2fd (diff)
downloadtxr-c9ad2400fa6e484951a1caedacfcae1175506a40.tar.gz
txr-c9ad2400fa6e484951a1caedacfcae1175506a40.tar.bz2
txr-c9ad2400fa6e484951a1caedacfcae1175506a40.zip
* eval.c (env_vb_to_fb): Allow null env argument. This
case occurs when (flet () ...) is expanded.
-rw-r--r--ChangeLog5
-rw-r--r--eval.c8
2 files changed, 10 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index b3509a78..ff8c5c45 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2015-05-12 Kaz Kylheku <kaz@kylheku.com>
+ * eval.c (env_vb_to_fb): Allow null env argument. This
+ case occurs when (flet () ...) is expanded.
+
+2015-05-12 Kaz Kylheku <kaz@kylheku.com>
+
DWIM places must use Lisp-1 semantics.
This really only affects code which does something like
diff --git a/eval.c b/eval.c
index c82b4e34..beecc139 100644
--- a/eval.c
+++ b/eval.c
@@ -139,9 +139,11 @@ val env_vbind(val env, val sym, val obj)
static void env_vb_to_fb(val env)
{
- type_check(env, ENV);
- env->e.fbindings = env->e.vbindings;
- env->e.vbindings = nil;
+ if (env) {
+ type_check(env, ENV);
+ env->e.fbindings = env->e.vbindings;
+ env->e.vbindings = nil;
+ }
}
noreturn static val eval_error(val form, val fmt, ...)