diff options
author | Daniel Llorens <lloda@sarc.name> | 2021-04-08 20:54:42 +0200 |
---|---|---|
committer | Daniel Llorens <lloda@sarc.name> | 2021-04-08 21:00:42 +0200 |
commit | bdb07f8fc7b37ef64498c7b06cd4457faf456189 (patch) | |
tree | 4c98d2d714f2071513897efe01063bebc36e32cb /lib/regcomp.c | |
parent | 88e703084567eb99238a3be6ba4285d87a25eeae (diff) | |
download | guile-wip-gnulib-update.tar.gz |
Update gnulib to a3a946f670718d0dee5a7425ad5ac0a29fb46ea1wip-gnulib-update
This fixes https://lists.gnu.org/archive/html/guile-devel/2021-04/msg00009.html
Diffstat (limited to 'lib/regcomp.c')
-rw-r--r-- | lib/regcomp.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/lib/regcomp.c b/lib/regcomp.c index d93698ae7..887e5b506 100644 --- a/lib/regcomp.c +++ b/lib/regcomp.c @@ -1695,12 +1695,14 @@ calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, Idx node, bool root) reg_errcode_t err; Idx i; re_node_set eclosure; - bool ok; bool incomplete = false; err = re_node_set_alloc (&eclosure, dfa->edests[node].nelem + 1); if (__glibc_unlikely (err != REG_NOERROR)) return err; + /* An epsilon closure includes itself. */ + eclosure.elems[eclosure.nelem++] = node; + /* This indicates that we are calculating this node now. We reference this value to avoid infinite loop. */ dfa->eclosures[node].nelem = -1; @@ -1753,10 +1755,6 @@ calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, Idx node, bool root) } } - /* An epsilon closure includes itself. */ - ok = re_node_set_insert (&eclosure, node); - if (__glibc_unlikely (! ok)) - return REG_ESPACE; if (incomplete && !root) dfa->eclosures[node].nelem = 0; else |