# HG changeset patch # User Paul Eggert # Date 1513727627 28800 # Node ID 1a07ab062d065a5b7071c08a087d4f91f760e6f6 # Parent c8f8774141145534b2527df79b9f092cb34cb820 regex: use re_malloc etc. consistently Problem and original patch reported by Arnold Robbins in: https://sourceware.org/ml/libc-alpha/2017-12/msg00241.html * lib/regcomp.c (re_comp): * lib/regexec.c (push_fail_stack, build_trtable, match_ctx_clean): Use re_malloc/re_realloc/re_free instead of malloc/realloc/free. diff -r c8f877414114 -r 1a07ab062d06 ChangeLog --- a/ChangeLog Tue Dec 19 09:05:15 2017 -0800 +++ b/ChangeLog Tue Dec 19 15:53:47 2017 -0800 @@ -1,3 +1,12 @@ +2017-12-19 Paul Eggert + + regex: use re_malloc etc. consistently + Problem and original patch reported by Arnold Robbins in: + https://sourceware.org/ml/libc-alpha/2017-12/msg00241.html + * lib/regcomp.c (re_comp): + * lib/regexec.c (push_fail_stack, build_trtable, match_ctx_clean): + Use re_malloc/re_realloc/re_free instead of malloc/realloc/free. + 2017-12-15 Tim Rühsen Paul Eggert diff -r c8f877414114 -r 1a07ab062d06 lib/regcomp.c --- a/lib/regcomp.c Tue Dec 19 09:05:15 2017 -0800 +++ b/lib/regcomp.c Tue Dec 19 15:53:47 2017 -0800 @@ -701,7 +701,7 @@ if (re_comp_buf.fastmap == NULL) { - re_comp_buf.fastmap = (char *) malloc (SBC_MAX); + re_comp_buf.fastmap = re_malloc (char, SBC_MAX); if (re_comp_buf.fastmap == NULL) return (char *) gettext (__re_error_msgid + __re_error_msgid_idx[(int) REG_ESPACE]); @@ -1197,7 +1197,7 @@ break; if (i == preg->re_nsub) { - free (dfa->subexp_map); + re_free (dfa->subexp_map); dfa->subexp_map = NULL; } } diff -r c8f877414114 -r 1a07ab062d06 lib/regexec.c --- a/lib/regexec.c Tue Dec 19 09:05:15 2017 -0800 +++ b/lib/regexec.c Tue Dec 19 15:53:47 2017 -0800 @@ -1334,8 +1334,8 @@ if (fs->num == fs->alloc) { struct re_fail_stack_ent_t *new_array; - new_array = realloc (fs->stack, (sizeof (struct re_fail_stack_ent_t) - * fs->alloc * 2)); + new_array = re_realloc (fs->stack, struct re_fail_stack_ent_t, + fs->alloc * 2); if (new_array == NULL) return REG_ESPACE; fs->alloc *= 2; @@ -3319,7 +3319,7 @@ if (BE (ndests <= 0, 0)) { if (dests_node_malloced) - free (dests_alloc); + re_free (dests_alloc); /* Return false in case of an error, true otherwise. */ if (ndests == 0) { @@ -3349,18 +3349,17 @@ alloca (ndests * 3 * sizeof (re_dfastate_t *)); else { - dest_states = (re_dfastate_t **) - malloc (ndests * 3 * sizeof (re_dfastate_t *)); + dest_states = re_malloc (re_dfastate_t *, ndests * 3); if (BE (dest_states == NULL, 0)) { out_free: if (dest_states_malloced) - free (dest_states); + re_free (dest_states); re_node_set_free (&follows); for (i = 0; i < ndests; ++i) re_node_set_free (dests_node + i); if (dests_node_malloced) - free (dests_alloc); + re_free (dests_alloc); return false; } dest_states_malloced = true; @@ -3491,14 +3490,14 @@ } if (dest_states_malloced) - free (dest_states); + re_free (dest_states); re_node_set_free (&follows); for (i = 0; i < ndests; ++i) re_node_set_free (dests_node + i); if (dests_node_malloced) - free (dests_alloc); + re_free (dests_alloc); return true; } @@ -4166,7 +4165,7 @@ re_free (top->path->array); re_free (top->path); } - free (top); + re_free (top); } mctx->nsub_tops = 0;