diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2013-09-08 12:47:05 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2013-09-08 12:47:05 +0200 |
commit | 4661f6cb95c365c434b753cdf6d4c1251f321230 (patch) | |
tree | cf1225ec147958393063ad3bb6b3995abecf98a9 /regex_internal.c | |
parent | 187f81febdf5a52d1c646bd83a10c9f03d13947b (diff) | |
parent | c3e4d0cf3f1fd24164e0a58db23b86b56c6dc7c8 (diff) | |
download | egawk-4661f6cb95c365c434b753cdf6d4c1251f321230.tar.gz egawk-4661f6cb95c365c434b753cdf6d4c1251f321230.tar.bz2 egawk-4661f6cb95c365c434b753cdf6d4c1251f321230.zip |
Merge branch 'gawk-4.1-stable'
Diffstat (limited to 'regex_internal.c')
-rw-r--r-- | regex_internal.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/regex_internal.c b/regex_internal.c index 5f77bcb0..c7de18b6 100644 --- a/regex_internal.c +++ b/regex_internal.c @@ -1451,7 +1451,18 @@ re_dfa_add_node (re_dfa_t *dfa, re_token_t token) new_eclosures = re_realloc (dfa->eclosures, re_node_set, new_nodes_alloc); if (BE (new_nexts == NULL || new_indices == NULL || new_edests == NULL || new_eclosures == NULL, 0)) - return -1; + { + /* if any are not NULL, free them, avoid leaks */ + if (new_nexts != NULL) + re_free(new_nexts); + if (new_indices != NULL) + re_free(new_indices); + if (new_edests != NULL) + re_free(new_edests); + if (new_eclosures != NULL) + re_free(new_eclosures); + return -1; + } dfa->nexts = new_nexts; dfa->org_indices = new_indices; dfa->edests = new_edests; |