diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2021-02-08 09:04:43 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2021-02-08 09:04:43 +0200 |
commit | 33ef3ac7854adece095e69ea8fb0e70fb1feeea6 (patch) | |
tree | d72521bddf2addc48081e96786d1bf2489dfa92d /support/regcomp.c | |
parent | 04e5d7b0199fd98cbb7505519a9e8210d6c84eb2 (diff) | |
download | egawk-33ef3ac7854adece095e69ea8fb0e70fb1feeea6.tar.gz egawk-33ef3ac7854adece095e69ea8fb0e70fb1feeea6.tar.bz2 egawk-33ef3ac7854adece095e69ea8fb0e70fb1feeea6.zip |
Updates from GNULIB, including major work on regex.
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 |