summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--eval.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 22860e28..88b31abe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2011-11-29 Kaz Kylheku <kaz@kylheku.com>
+ * eval.c (expand_vars): Bugfix: was not handling vars
+ of the form var, only (var initform).
+
+2011-11-29 Kaz Kylheku <kaz@kylheku.com>
+
Support assignment to (car ...) and (cdr ...).
* eval.c (car_s, cdr_s): New symbol variables.
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);