summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-03-02 21:37:48 -0800
committerKaz Kylheku <kaz@kylheku.com>2014-03-02 22:01:12 -0800
commit7807b9cc097e9356217e3071ad1310191dda58fe (patch)
treebfe3b467c621efb51ae713c6df3c4ebf60f51d7a /eval.c
parentdf5d69a59ff5af28a66cec7ca0e88ec0b67f4ab4 (diff)
downloadtxr-7807b9cc097e9356217e3071ad1310191dda58fe.tar.gz
txr-7807b9cc097e9356217e3071ad1310191dda58fe.tar.bz2
txr-7807b9cc097e9356217e3071ad1310191dda58fe.zip
* eval.c (expand): Bugfix. When processing a defvar, should mark
the variable as special at expansion time. Without this, binding forms in other parts of the tree won't be expanded properly to bring about the special semantics.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index e718853a..be60544b 100644
--- a/eval.c
+++ b/eval.c
@@ -2409,6 +2409,8 @@ tail:
if (sym == defsymacro_s) {
val result = eval(form_ex, make_env(nil, nil, nil), form);
return cons(quote_s, cons(result, nil));
+ } else {
+ mark_special(name);
}
return form_ex;