summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--eval.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 92145108..846f7c0c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2012-01-10 Kaz Kylheku <kaz@kylheku.com>
+ * eval.c (generate): Bugfix: do not call gen_fun before
+ testing while_pred.
+
+2012-01-10 Kaz Kylheku <kaz@kylheku.com>
+
* eval.c (tostring, tostringp): New static functions.
(eval_init): New functions registered.
diff --git a/eval.c b/eval.c
index 53baae3b..859cafaa 100644
--- a/eval.c
+++ b/eval.c
@@ -1314,10 +1314,10 @@ static val generate_func(val env, val lcons)
static val generate(val while_pred, val gen_fun)
{
- val first_item = funcall(gen_fun);
if (!funcall(while_pred)) {
return nil;
} else {
+ val first_item = funcall(gen_fun);
val lc = make_lazy_cons(func_f1(cons(while_pred, gen_fun), generate_func));
rplaca(lc, first_item);
return lc;