diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2011-11-24 22:45:31 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2011-11-24 22:45:31 -0800 |
commit | 21d250ce79f3c3a109731eeee7d67d757031dc1d (patch) | |
tree | 157eb562b3d85fb19aa7c5d41e443e2e81bd926d | |
parent | e1841e6982a68ec90fc7c80901a98a66f21318b3 (diff) | |
download | txr-21d250ce79f3c3a109731eeee7d67d757031dc1d.tar.gz txr-21d250ce79f3c3a109731eeee7d67d757031dc1d.tar.bz2 txr-21d250ce79f3c3a109731eeee7d67d757031dc1d.zip |
* match.c (h_coll): Use getplist_f to distinguish
the case that :vars is explicitly specified as (). In this
case, no bindings escape from the collect.
-rw-r--r-- | match.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -705,7 +705,8 @@ static val h_coll(match_line_ctx c, match_line_ctx *cout) val mintimes = getplist(args, mintimes_k); val maxtimes = getplist(args, maxtimes_k); val chars = getplist(args, chars_k); - val vars = getplist(args, vars_k); + val have_vars; + val vars = getplist_f(args, vars_k, &have_vars); cnum cmax = nump(gap) ? c_num(gap) : (nump(max) ? c_num(max) : 0); cnum cmin = nump(gap) ? c_num(gap) : (nump(min) ? c_num(min) : 0); cnum mincounter = cmin, maxcounter = 0; @@ -784,7 +785,7 @@ static val h_coll(match_line_ctx c, match_line_ctx *cout) val binding = car(iter); val vars_binding = assoc(vars, car(binding)); - if (!vars || vars_binding) { + if (!have_vars || vars_binding) { val existing = assoc(bindings_coll, car(binding)); bindings_coll = acons_new(bindings_coll, car(binding), cons(cdr(binding), cdr(existing))); |