summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib.c b/lib.c
index 70324341..a05ead7e 100644
--- a/lib.c
+++ b/lib.c
@@ -246,7 +246,10 @@ val *car_l(val cons)
case CONS:
return &cons->c.car;
case LCONS:
- funcall1(cons->lc.func, cons);
+ if (cons->lc.func) {
+ funcall1(cons->lc.func, cons);
+ cons->lc.func = nil;
+ }
return &cons->lc.car;
default:
type_mismatch(lit("~s is not a cons"), cons, nao);
@@ -259,7 +262,10 @@ val *cdr_l(val cons)
case CONS:
return &cons->c.cdr;
case LCONS:
- funcall1(cons->lc.func, cons);
+ if (cons->lc.func) {
+ funcall1(cons->lc.func, cons);
+ cons->lc.func = nil;
+ }
return &cons->lc.cdr;
default:
type_mismatch(lit("~s is not a cons"), cons, nao);