diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2021-02-08 09:05:28 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2021-02-08 09:05:28 +0200 |
commit | e5f0cbb4480f9fef45e89f99ddc56ff3501e18e6 (patch) | |
tree | bd33b3aca3ea2f1eefd10743d729ae8c9f0a2cc1 /support/regcomp.c | |
parent | 2dbf19a6bcf289c1cf4c309f15f1a33aa469de93 (diff) | |
parent | 33ef3ac7854adece095e69ea8fb0e70fb1feeea6 (diff) | |
download | egawk-e5f0cbb4480f9fef45e89f99ddc56ff3501e18e6.tar.gz egawk-e5f0cbb4480f9fef45e89f99ddc56ff3501e18e6.tar.bz2 egawk-e5f0cbb4480f9fef45e89f99ddc56ff3501e18e6.zip |
Merge branch 'gawk-5.1-stable'
Diffstat (limited to 'support/regcomp.c')
-rw-r--r-- | support/regcomp.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/support/regcomp.c b/support/regcomp.c index 692928b0..887e5b50 100644 --- a/support/regcomp.c +++ b/support/regcomp.c @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2020 Free Software Foundation, Inc. + Copyright (C) 2002-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>. @@ -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 |