diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-12-27 17:57:04 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-12-27 17:57:04 -0800 |
commit | b6b1ea80260db58067c6a71f6ef9f1833b4102b2 (patch) | |
tree | 85121c7b7cd00eeef5b0d1c82bb3f3ba9e6c2acc /lisplib.c | |
parent | 1a591b04b32d9bca406a338c1377aa4526492eaf (diff) | |
download | txr-b6b1ea80260db58067c6a71f6ef9f1833b4102b2.tar.gz txr-b6b1ea80260db58067c6a71f6ef9f1833b4102b2.tar.bz2 txr-b6b1ea80260db58067c6a71f6ef9f1833b4102b2.zip |
Shocking four-year-old bug in collect/coll.
This originates to a commit on 2011-10-21. In that commit, I
attempted to make until/last clauses have visibility to the
bindings in the collect body (even though those are
discarded). The problem is that the until/last clause is tried
whether or not the body succeeds. When the body fails, no
bindings emanate from it. In that case, the until/last clause
is wrongly evaluated in an environment with no bindings
whatsoever, meaning that even bindings that existed before the
collect are not available to it.
* match.c (h_coll, v_collect): Evaluate the last/until clause
using the collect body bindings only if those bindings are not
nil, otherwise use the original bindings from before entry
into the collect.
Diffstat (limited to 'lisplib.c')
0 files changed, 0 insertions, 0 deletions