diff options
| author | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2026-06-27 21:07:50 +0200 |
|---|---|---|
| committer | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2026-06-27 21:08:53 +0200 |
| commit | 5337d33cc6e46a6eb281f2abb325b29c882a82b2 (patch) | |
| tree | c5110c4fa122f3fbbe4756543dd9921a0903594a /rege_dfa.c | |
| parent | 413bad8c8848bc2e31ac0034c58130ac67f3b1f8 (diff) | |
| download | terex-5337d33cc6e46a6eb281f2abb325b29c882a82b2.tar.gz | |
fixup REG_ANCHORED: the checks have to be in shortest()
I put them into longest() as well, but it appears that both find() and cfind()
will always try shortest() first and should abort if that returns NULL.
Diffstat (limited to 'rege_dfa.c')
| -rw-r--r-- | rege_dfa.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -97,6 +97,9 @@ longest( break; /* NOTE BREAK OUT */ } } + if (ss->flags & NOPROGRESS && v->eflags & REG_ANCHORED) { + return NULL; + } cp = nextchr(v, cp); ss->lastseen = cp; css = ss; @@ -112,6 +115,9 @@ longest( break; /* NOTE BREAK OUT */ } } + if (ss->flags & NOPROGRESS && v->eflags & REG_ANCHORED) { + return NULL; + } cp = nextchr(v, cp); ss->lastseen = cp; css = ss; @@ -230,6 +236,9 @@ shortest( break; /* NOTE BREAK OUT */ } } + if (ss->flags & NOPROGRESS && v->eflags & REG_ANCHORED) { + return NULL; + } cp = nextchr(v, cp); ss->lastseen = cp; css = ss; @@ -248,6 +257,9 @@ shortest( break; /* NOTE BREAK OUT */ } } + if (ss->flags & NOPROGRESS && v->eflags & REG_ANCHORED) { + return NULL; + } cp = nextchr(v, cp); ss->lastseen = cp; css = ss; |
