summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-11-29 20:05:07 -0800
committerKaz Kylheku <kaz@kylheku.com>2011-11-29 20:05:07 -0800
commit5627d7bacb2ee381ed9b97ac669cb7269802d8bc (patch)
tree601a193a886f33598f414cdf2c78a8451fd794f3 /eval.c
parent6f8a6cf7c99810aa6c7f2254bce22c0fd1eedebe (diff)
downloadtxr-5627d7bacb2ee381ed9b97ac669cb7269802d8bc.tar.gz
txr-5627d7bacb2ee381ed9b97ac669cb7269802d8bc.tar.bz2
txr-5627d7bacb2ee381ed9b97ac669cb7269802d8bc.zip
* eval.c (expand_vars): Bugfix: was not handling vars
of the form var, only (var initform).
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 1993481e..5ae61d71 100644
--- a/eval.c
+++ b/eval.c
@@ -693,6 +693,12 @@ static val expand_vars(val vars)
{
if (atom(vars)) {
return vars;
+ } else if (symbolp(car(vars))) {
+ val rest_vars = rest(vars);
+ val rest_vars_ex = expand_vars(rest_vars);
+ if (rest_vars == rest_vars_ex)
+ return vars;
+ return cons(car(vars), rest_vars_ex);
} else {
cons_bind (var, init, car(vars));
val rest_vars = rest(vars);