diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2021-06-30 21:46:50 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2021-06-30 21:46:50 +0300 |
commit | b3bfdb152de59cab66ee428a42bc2a7f6f97b636 (patch) | |
tree | c2fb49b170362f23736b1e720c7de9b512c0368c /support/regexec.c | |
parent | b00eb107c4f72189c6a49823550413177e6bbb60 (diff) | |
download | egawk-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.c | 12 |
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; |