diff --git a/text-utils-prefix/src/art.rs b/text-utils-prefix/src/art.rs index d2ea7f8..3fe0d35 100644 --- a/text-utils-prefix/src/art.rs +++ b/text-utils-prefix/src/art.rs @@ -786,10 +786,20 @@ impl AdaptiveRadixTrie { let mut i = 0; while let Some(&j) = permutation.get(i) { - if node - .contains_prefix_iter(continuations[j].iter().filter(|&b| *b > 0).copied(), n) - .is_some() - { + let cont = &continuations[j]; + if cont.is_empty() { + // empty continuations are always a match + result.push(j); + i += 1; + continue; + } + let mut cont = cont.iter().filter(|&b| *b > 0).copied().peekable(); + if cont.peek().is_none() { + // continuations with only null bytes are never a match + i += 1; + continue; + } + if node.contains_prefix_iter(cont, n).is_some() { result.push(j); } else { i += skips[i];