summaryrefslogtreecommitdiffstats
path: root/filter.c
diff options
context:
space:
mode:
Diffstat (limited to 'filter.c')
-rw-r--r--filter.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/filter.c b/filter.c
index f36cd1a8..491cebbd 100644
--- a/filter.c
+++ b/filter.c
@@ -147,7 +147,7 @@ static val regex_from_trie(val trie)
if (zerop(hash_count(trie))) {
return nil;
} else {
- list_collect_decl (out, ptail);
+ val out = nil;
val cell;
struct hash_iter hi;
@@ -155,12 +155,15 @@ static val regex_from_trie(val trie)
while ((cell = hash_iter_next(&hi)) != nil) {
val rx = regex_from_trie(us_cdr(cell));
- ptail = list_collect(ptail,
- if3(consp(rx) && car(rx) == compound_s,
- cons(compound_s, cons(us_car(cell), cdr(rx))),
- list(compound_s, us_car(cell), rx, nao)));
+ val ry = if3(consp(rx) && car(rx) == compound_s,
+ cons(compound_s, cons(us_car(cell), cdr(rx))),
+ list(compound_s, us_car(cell), rx, nao));
+ if (out)
+ out = list(or_s, ry, out, nao);
+ else
+ out = ry;
}
- return cons(or_s, out);
+ return out;
}
}
/* fallthrough */