summaryrefslogtreecommitdiff
path: root/support/regcomp.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2021-02-08 09:04:43 +0200
committerArnold D. Robbins <arnold@skeeve.com>2021-02-08 09:04:43 +0200
commit33ef3ac7854adece095e69ea8fb0e70fb1feeea6 (patch)
treed72521bddf2addc48081e96786d1bf2489dfa92d /support/regcomp.c
parent04e5d7b0199fd98cbb7505519a9e8210d6c84eb2 (diff)
downloadgawk-33ef3ac7854adece095e69ea8fb0e70fb1feeea6.tar.gz
Updates from GNULIB, including major work on regex.
Diffstat (limited to 'support/regcomp.c')
-rw-r--r--support/regcomp.c10
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