aboutsummaryrefslogtreecommitdiffstats
path: root/support/regexec.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2021-06-30 21:46:50 +0300
committerArnold D. Robbins <arnold@skeeve.com>2021-06-30 21:46:50 +0300
commitb3bfdb152de59cab66ee428a42bc2a7f6f97b636 (patch)
treec2fb49b170362f23736b1e720c7de9b512c0368c /support/regexec.c
parentb00eb107c4f72189c6a49823550413177e6bbb60 (diff)
downloadegawk-b3bfdb152de59cab66ee428a42bc2a7f6f97b636.tar.gz
egawk-b3bfdb152de59cab66ee428a42bc2a7f6f97b636.tar.bz2
egawk-b3bfdb152de59cab66ee428a42bc2a7f6f97b636.zip
Update support files from GNULIB.
Diffstat (limited to 'support/regexec.c')
-rw-r--r--support/regexec.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/support/regexec.c b/support/regexec.c
index 6309deac..5e4eb497 100644
--- a/support/regexec.c
+++ b/support/regexec.c
@@ -1220,9 +1220,13 @@ proceed_next_node (const re_match_context_t *mctx, Idx nregs, regmatch_t *regs,
{
re_node_set *cur_nodes = &mctx->state_log[*pidx]->nodes;
re_node_set *edests = &dfa->edests[node];
- bool ok = re_node_set_insert (eps_via_nodes, node);
- if (__glibc_unlikely (! ok))
- return -2;
+
+ if (! re_node_set_contains (eps_via_nodes, node))
+ {
+ bool ok = re_node_set_insert (eps_via_nodes, node);
+ if (__glibc_unlikely (! ok))
+ return -2;
+ }
/* Pick a valid destination, or return -1 if none is found. */
Idx dest_node = -1;
@@ -1414,7 +1418,7 @@ set_regs (const regex_t *preg, const re_match_context_t *mctx, size_t nmatch,
update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, nmatch);
if ((idx == pmatch[0].rm_eo && cur_node == mctx->last_node)
- || re_node_set_contains (&eps_via_nodes, cur_node))
+ || (fs && re_node_set_contains (&eps_via_nodes, cur_node)))
{
Idx reg_idx;
cur_node = -1;