summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-11-24 22:43:52 -0800
committerKaz Kylheku <kaz@kylheku.com>2011-11-24 22:43:52 -0800
commite1841e6982a68ec90fc7c80901a98a66f21318b3 (patch)
tree6b87c3b3c8702c0e8dbb10c7dc6b14f2a997fc21 /lib.c
parentabdf06ed559fbc2f775271027f5000202bac9ff3 (diff)
downloadtxr-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.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 1076bb2c..440b258e 100644
--- a/lib.c
+++ b/lib.c
@@ -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);