summaryrefslogtreecommitdiff
path: root/pfxtree.c
diff options
context:
space:
mode:
Diffstat (limited to 'pfxtree.c')
-rw-r--r--pfxtree.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/pfxtree.c b/pfxtree.c
index f58d1ae..fa9a0e7 100644
--- a/pfxtree.c
+++ b/pfxtree.c
@@ -45,11 +45,20 @@ pt_new ()
void
pt_free (PrefixTree *self)
{
+ pt_deep_free (self, false);
+}
+
+void
+pt_deep_free (PrefixTree *self, bool free_data)
+{
PrefixTree *child, *next = NULL;
for (child = self->children; child != NULL; child = next)
{
+ if (free_data && 'p' == child->type && child->data.p != NULL)
+ free (child->data.p);
+
next = child->next;
- pt_free (child);
+ pt_deep_free (child, free_data);
}
free (self);