summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2017-01-23 16:03:12 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2017-01-23 16:03:36 -0800
commit8f2d7009a1c982c6ed9c844529639f1794d029bb (patch)
tree99e9a69931f577cfddec8c97e31ed062c7b53d99 /src
parentb2e0f3f86c6ff948c9b37668af762ea90f06e401 (diff)
downloadgrep-8f2d7009a1c982c6ed9c844529639f1794d029bb.tar.gz
grep: simplify recent kwset change
* src/kwset.c (acexec_trans): Simplify.
Diffstat (limited to 'src')
-rw-r--r--src/kwset.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/kwset.c b/src/kwset.c
index 258cff53..3be5c427 100644
--- a/src/kwset.c
+++ b/src/kwset.c
@@ -848,20 +848,15 @@ acexec_trans (kwset_t kwset, char const *text, ptrdiff_t len,
struct trie const *accept1;
char const *left1;
unsigned char c = tr (trans, *tp++);
- while (true)
+
+ do
{
tree = trie->links;
while (tree && c != tree->label)
tree = c < tree->label ? tree->llink : tree->rlink;
- if (tree)
- break;
- trie = trie->fail;
- if (!trie)
- break;
- left1 = tp - trie->depth;
- if (left1 > left)
- break;
}
+ while (!tree && (trie = trie->fail) && accept->depth <= trie->depth);
+
if (!tree)
break;
trie = tree->trie;