summaryrefslogtreecommitdiff
path: root/src/sp_config.c
diff options
context:
space:
mode:
authorBen Fuhrmannek2021-08-02 19:19:23 +0200
committerBen Fuhrmannek2021-08-02 19:19:23 +0200
commitae4ac9f69de3120004557824e0d766fe8140b27d (patch)
treeef97751ab54357d5d74859b870ce84f4c6d044df /src/sp_config.c
parent4cda0120313dfd5d71236f6faf87416e93f5f89c (diff)
properly free memory on shutdown
Diffstat (limited to 'src/sp_config.c')
-rw-r--r--src/sp_config.c70
1 files changed, 43 insertions, 27 deletions
diff --git a/src/sp_config.c b/src/sp_config.c
index c12b435..72781c6 100644
--- a/src/sp_config.c
+++ b/src/sp_config.c
@@ -216,36 +216,52 @@ int sp_parse_config(const char *conf_file) {
216 return SUCCESS; 216 return SUCCESS;
217} 217}
218 218
219void sp_disabled_function_list_free(sp_list_node *list) { 219void sp_free_disabled_function(void *data) {
220 sp_list_node *cursor = list; 220 sp_disabled_function *df = data;
221 while (cursor) {
222 sp_disabled_function *df = cursor->data;
223 if (df) {
224 sp_list_free(df->functions_list);
225 sp_list_free(df->param_array_keys);
226 sp_list_free(df->var_array_keys);
227 221
228 sp_pcre_free(df->r_filename); 222 sp_free_zstr(df->textual_representation);
229 sp_pcre_free(df->r_function);
230 sp_pcre_free(df->r_param);
231 sp_pcre_free(df->r_ret);
232 sp_pcre_free(df->r_value);
233 sp_pcre_free(df->r_key);
234 223
235 sp_tree_free(df->param); 224 sp_free_zstr(df->filename);
236 sp_tree_free(df->var); 225 sp_pcre_free(df->r_filename);
237 } 226
238 cursor = cursor->next; 227 sp_free_zstr(df->function);
239 } 228 sp_pcre_free(df->r_function);
229 sp_list_free(df->functions_list, free);
230
231 sp_free_zstr(df->hash);
232
233 sp_tree_free(df->param);
234 sp_pcre_free(df->r_param);
235
236 sp_pcre_free(df->r_ret);
237 sp_free_zstr(df->ret);
238
239 sp_pcre_free(df->r_value);
240 sp_free_zstr(df->value);
241
242 sp_pcre_free(df->r_key);
243 sp_free_zstr(df->key);
244
245 sp_free_zstr(df->dump);
246 sp_free_zstr(df->alias);
247
248 // sp_list_free(df->param_array_keys);
249 // sp_list_free(df->var_array_keys);
250
251 sp_tree_free(df->var);
252
253 pefree(df->cidr, 1);
240} 254}
241 255
242void sp_cookie_list_free(sp_list_node *list) { 256void sp_free_cookie(void *data) {
243 sp_list_node *cursor = list; 257 sp_cookie *c = data;
244 while (cursor) { 258 if (c->name)
245 sp_cookie *c = cursor->data; 259 zend_string_release_ex(c->name, 1);
246 if (c) { 260 sp_pcre_free(c->name_r);
247 sp_pcre_free(c->name_r); 261}
248 } 262
249 cursor = cursor->next; 263void sp_free_zstr(void *data) {
264 if (data) {
265 zend_string_release_ex((zend_string*)data, 1);
250 } 266 }
251} 267}