diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2011-11-24 22:43:52 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2011-11-24 22:43:52 -0800 |
commit | e1841e6982a68ec90fc7c80901a98a66f21318b3 (patch) | |
tree | 6b87c3b3c8702c0e8dbb10c7dc6b14f2a997fc21 /lib.c | |
parent | abdf06ed559fbc2f775271027f5000202bac9ff3 (diff) | |
download | txr-e1841e6982a68ec90fc7c80901a98a66f21318b3.tar.gz txr-e1841e6982a68ec90fc7c80901a98a66f21318b3.tar.bz2 txr-e1841e6982a68ec90fc7c80901a98a66f21318b3.zip |
* lib.c (getplist_f): New function.
* lib.h (getplist_f): Declared.
* match.c (v_collect, h_coll): Use getplist_f to distinguish
the case that :vars is explicitly specified as (). In this
case, no bindings escape from the collect.
* tests/008/soundex.txr: This test case broke due to using
:vars () and yet counting on the variable to exist.
* RELNOTES: Updated.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -677,6 +677,20 @@ val getplist(val list, val key) return nil; } +val getplist_f(val list, val key, val *found) +{ + for (; list; list = cdr(cdr(list))) { + val ind = first(list); + if (eq(ind, key)) { + *found = t; + return second(list); + } + } + + *found = nil; + return nil; +} + val proper_plist_to_alist(val list) { list_collect_decl (out, tail); |