diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2022-03-25 14:00:55 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2022-03-25 14:00:55 +0300 |
commit | 6739849e21c5bfd849b0c4029c2950902e7656af (patch) | |
tree | 69422f7ef3e6c047886dbeac15cad753e6a89248 | |
parent | c07a390e647b74a40f1726e6fe3580bc370f178b (diff) | |
download | egawk-6739849e21c5bfd849b0c4029c2950902e7656af.tar.gz egawk-6739849e21c5bfd849b0c4029c2950902e7656af.tar.bz2 egawk-6739849e21c5bfd849b0c4029c2950902e7656af.zip |
Sync support files from GNULIB.
-rw-r--r-- | support/ChangeLog | 4 | ||||
-rw-r--r-- | support/cdefs.h | 4 | ||||
-rw-r--r-- | support/regex_internal.c | 22 | ||||
-rw-r--r-- | support/regexec.c | 5 |
4 files changed, 20 insertions, 15 deletions
diff --git a/support/ChangeLog b/support/ChangeLog index 5fdab3de..57603648 100644 --- a/support/ChangeLog +++ b/support/ChangeLog @@ -1,3 +1,7 @@ +2022-03-25 Arnold D. Robbins <arnold@skeeve.com> + + * cdefs.h, regex_internal.c, regexec.c: Sync with GNULIB. + 2022-01-19 Arnold D. Robbins <arnold@skeeve.com> * cdefs.h, dfa.c, dfa.h, dynarray.h, flexmember.h, idx.h, diff --git a/support/cdefs.h b/support/cdefs.h index 44d3826b..cb251450 100644 --- a/support/cdefs.h +++ b/support/cdefs.h @@ -41,7 +41,9 @@ Similarly for __has_builtin, etc. */ #if (defined __has_attribute \ && (!defined __clang_minor__ \ - || 3 < __clang_major__ + (5 <= __clang_minor__))) + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) # define __glibc_has_attribute(attr) __has_attribute (attr) #else # define __glibc_has_attribute(attr) 0 diff --git a/support/regex_internal.c b/support/regex_internal.c index 3945ee7e..0e6919f3 100644 --- a/support/regex_internal.c +++ b/support/regex_internal.c @@ -1396,24 +1396,22 @@ re_dfa_add_node (re_dfa_t *dfa, re_token_t token) if (__glibc_unlikely (new_nodes == NULL)) return -1; dfa->nodes = new_nodes; + dfa->nodes_alloc = new_nodes_alloc; new_nexts = re_realloc (dfa->nexts, Idx, new_nodes_alloc); + if (new_nexts != NULL) + dfa->nexts = new_nexts; new_indices = re_realloc (dfa->org_indices, Idx, new_nodes_alloc); + if (new_indices != NULL) + dfa->org_indices = new_indices; new_edests = re_realloc (dfa->edests, re_node_set, new_nodes_alloc); + if (new_edests != NULL) + dfa->edests = new_edests; new_eclosures = re_realloc (dfa->eclosures, re_node_set, new_nodes_alloc); + if (new_eclosures != NULL) + dfa->eclosures = new_eclosures; if (__glibc_unlikely (new_nexts == NULL || new_indices == NULL || new_edests == NULL || new_eclosures == NULL)) - { - re_free (new_nexts); - re_free (new_indices); - re_free (new_edests); - re_free (new_eclosures); - return -1; - } - dfa->nexts = new_nexts; - dfa->org_indices = new_indices; - dfa->edests = new_edests; - dfa->eclosures = new_eclosures; - dfa->nodes_alloc = new_nodes_alloc; + return -1; } dfa->nodes[dfa->nodes_len] = token; dfa->nodes[dfa->nodes_len].constraint = 0; diff --git a/support/regexec.c b/support/regexec.c index aea1e7da..521cb028 100644 --- a/support/regexec.c +++ b/support/regexec.c @@ -1308,8 +1308,8 @@ push_fail_stack (struct re_fail_stack_t *fs, Idx str_idx, Idx dest_node, re_node_set *eps_via_nodes) { reg_errcode_t err; - Idx num = fs->num++; - if (fs->num == fs->alloc) + Idx num = fs->num; + if (num == fs->alloc) { struct re_fail_stack_ent_t *new_array; new_array = re_realloc (fs->stack, struct re_fail_stack_ent_t, @@ -1324,6 +1324,7 @@ push_fail_stack (struct re_fail_stack_t *fs, Idx str_idx, Idx dest_node, fs->stack[num].regs = re_malloc (regmatch_t, 2 * nregs); if (fs->stack[num].regs == NULL) return REG_ESPACE; + fs->num = num + 1; memcpy (fs->stack[num].regs, regs, sizeof (regmatch_t) * nregs); memcpy (fs->stack[num].regs + nregs, prevregs, sizeof (regmatch_t) * nregs); err = re_node_set_init_copy (&fs->stack[num].eps_via_nodes, eps_via_nodes); |