summaryrefslogtreecommitdiff
path: root/src/sp_list.c
diff options
context:
space:
mode:
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 }