diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-11-21 19:25:54 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-11-21 19:25:54 -0800 |
commit | 68ddbfb634809be74722e9252993c6089a0c4d7a (patch) | |
tree | 7f324cecd2a447703d6548c678dc835d9198e5c1 /tests/017/glob-carray.tl | |
parent | 368b33e560b541b20a9a28e6ba307a22a813049e (diff) | |
download | txr-68ddbfb634809be74722e9252993c6089a0c4d7a.tar.gz txr-68ddbfb634809be74722e9252993c6089a0c4d7a.tar.bz2 txr-68ddbfb634809be74722e9252993c6089a0c4d7a.zip |
bugfix: two issues in mappend* and append*.
Two bugs in these functions, both attributable to
the lazy_appendv implementation:
They destructively catenate the input lists,
much like nconc, even though documented as
non-destructive.
If any input list is infinite, other than the
last input list, that list is forced, resulting
in an infinite loop.
* lib.c (lazy_appendv_func): Rewritten to use a
different algorithm which earnestly allocates a
new lazy cons for each element of the output
sequence, except for the tail part corresponding
to the last list.
(lazy_appendv): Set up the lazy cons according
to the new representation and just return it.
No searching for the tail of the nonempty list,
and no destructive manipulation.
Diffstat (limited to 'tests/017/glob-carray.tl')
0 files changed, 0 insertions, 0 deletions