summaryrefslogtreecommitdiff
path: root/src/sp_list.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_list.c
parent4cda0120313dfd5d71236f6faf87416e93f5f89c (diff)
properly free memory on shutdown
Diffstat (limited to 'src/sp_list.c')
-rw-r--r--src/sp_list.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/sp_list.c b/src/sp_list.c
index 0f00371..92e628d 100644
--- a/src/sp_list.c
+++ b/src/sp_list.c
@@ -1,8 +1,22 @@
1#include "php_snuffleupagus.h" 1#include "php_snuffleupagus.h"
2 2
3void sp_list_free(sp_list_node *node) { 3void sp_list_free(sp_list_node *node, void (*free_data_func)(void *data)) {
4 while (node) { 4 while (node) {
5 sp_list_node *tmp = node->next; 5 sp_list_node *tmp = node->next;
6 if (free_data_func && node->data) {
7 free_data_func(node->data);
8 }
9 pefree(node, 1);
10 node = tmp;
11 }
12}
13
14void sp_list_free2(sp_list_node *node) {
15 while (node) {
16 sp_list_node *tmp = node->next;
17 if (node->data) {
18 pefree(node->data, 1);
19 }
6 pefree(node, 1); 20 pefree(node, 1);
7 node = tmp; 21 node = tmp;
8 } 22 }