diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2011-10-04 16:45:16 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2011-10-04 16:45:16 -0700 |
commit | 6bd176817d1a9deca4ae7136fa616b82c50cdb61 (patch) | |
tree | 8a66ee624949844b559cd26075f3f8a5bbb5cc2a /ChangeLog | |
parent | 6dba0b4836e192906c63773527861ddf9de1d679 (diff) | |
download | txr-6bd176817d1a9deca4ae7136fa616b82c50cdb61.tar.gz txr-6bd176817d1a9deca4ae7136fa616b82c50cdb61.tar.bz2 txr-6bd176817d1a9deca4ae7136fa616b82c50cdb61.zip |
* match.c (match_line, match_files): Another correction to how bindings
are handled in collect/coll. New bindings from the main clause and
last clause must override old bindings. This is done by some
additional set difference operations based on symbol identity.
Otherwise it is possible to end up with multiple bindings for the
same symbol, which is untidy. If the collect clause scrubs a variable
with forget and re-binds it, then combining that environment
with the previous bindings will create a duplicate.
Also, fixed a serious bug with the bindings from the last clause;
the append was wrongly put into the loop that processes the collected
lists.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -1,5 +1,19 @@ 2011-10-04 Kaz Kylheku <kaz@kylheku.com> + * match.c (match_line, match_files): Another correction to how bindings + are handled in collect/coll. New bindings from the main clause and + last clause must override old bindings. This is done by some + additional set difference operations based on symbol identity. + Otherwise it is possible to end up with multiple bindings for the + same symbol, which is untidy. If the collect clause scrubs a variable + with forget and re-binds it, then combining that environment + with the previous bindings will create a duplicate. + Also, fixed a serious bug with the bindings from the last clause; + the append was wrongly put into the loop that processes the collected + lists. + +2011-10-04 Kaz Kylheku <kaz@kylheku.com> + * lib.c (acons): New function. (set_diff): Optimize common case: list1 and list2 are the same, or list2 is substructure of list1. |