diff options
| author | Ben Fuhrmannek | 2021-08-02 19:19:23 +0200 |
|---|---|---|
| committer | Ben Fuhrmannek | 2021-08-02 19:19:23 +0200 |
| commit | ae4ac9f69de3120004557824e0d766fe8140b27d (patch) | |
| tree | ef97751ab54357d5d74859b870ce84f4c6d044df /src/sp_config.c | |
| parent | 4cda0120313dfd5d71236f6faf87416e93f5f89c (diff) | |
properly free memory on shutdown
Diffstat (limited to 'src/sp_config.c')
| -rw-r--r-- | src/sp_config.c | 70 |
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 | ||
| 219 | void sp_disabled_function_list_free(sp_list_node *list) { | 219 | void 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 | ||
| 242 | void sp_cookie_list_free(sp_list_node *list) { | 256 | void 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; | 263 | void sp_free_zstr(void *data) { |
| 264 | if (data) { | ||
| 265 | zend_string_release_ex((zend_string*)data, 1); | ||
| 250 | } | 266 | } |
| 251 | } | 267 | } |
