From 7807b9cc097e9356217e3071ad1310191dda58fe Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 2 Mar 2014 21:37:48 -0800 Subject: * 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. --- ChangeLog | 7 +++++++ eval.c | 2 ++ 2 files changed, 9 insertions(+) diff --git a/ChangeLog b/ChangeLog index 0a4e1327..34709343 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2014-03-02 Kaz Kylheku + + * 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. + 2014-03-02 Kaz Kylheku * parser.y (unquotes_occur): Fix use of unquote_s rather than sys_unquote_s 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; -- cgit v1.2.3