summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib.c b/lib.c
index 10df5305..899ba9ba 100644
--- a/lib.c
+++ b/lib.c
@@ -2195,16 +2195,16 @@ static val lazy_flatten_scan(val list, val *escape)
static val lazy_flatten_func(val env, val lcons)
{
- us_cons_bind (list, escape, env);
+ us_cons_bind (list, escape, lcons);
val atom = car(list);
val next = lazy_flatten_scan(cdr(list), &escape);
us_rplaca(lcons, atom);
- us_rplaca(env, next);
- us_rplacd(env, escape);
if (next)
- us_rplacd(lcons, make_lazy_cons(us_lcons_fun(lcons)));
+ us_rplacd(lcons, make_lazy_cons_car_cdr(us_lcons_fun(lcons), next, escape));
+ else
+ us_rplacd(lcons, nil);
return nil;
}
@@ -2220,7 +2220,8 @@ val lazy_flatten(val list)
if (!next)
return nil;
- return make_lazy_cons(func_f1(cons(next, escape), lazy_flatten_func));
+ return make_lazy_cons_car_cdr(func_f1(nil, lazy_flatten_func),
+ next, escape);
}
}