diff options
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -888,11 +888,15 @@ static val lazy_appendv_func(val env, val lcons) rplaca(lcons, last); - if (atom(nonempty)) { + if (nilp(lists)) { rplacd(lcons, nonempty); return nil; } + if (atom(nonempty)) + uw_throwf(error_s, lit("append*: cannot append to atom ~s"), + nonempty, nao); + rplacd(env, lists); { @@ -914,9 +918,13 @@ val lazy_appendv(val lists) break; } - if (atom(nonempty)) + if (nilp(lists)) return nonempty; + if (atom(nonempty)) + uw_throwf(error_s, lit("append*: cannot append to atom ~s"), + nonempty, nao); + { loc ptail = ltail(mkcloc(nonempty)); set(ptail, make_lazy_cons(func_f1(cons(car(deref(ptail)), lists), |