-implement tree freeing
authorChristian Grothoff <christian@grothoff.org>
Sat, 28 Jan 2012 21:25:31 +0000 (21:25 +0000)
committerChristian Grothoff <christian@grothoff.org>
Sat, 28 Jan 2012 21:25:31 +0000 (21:25 +0000)
src/fs/fs_sharetree.c

index 864be58bfada9b46a25330aa6e33925e19b713a4..396415bc6a499b4626d9779c75d7753b7501b4e1 100644 (file)
@@ -404,5 +404,29 @@ GNUNET_FS_share_tree_trim (struct GNUNET_FS_ShareTreeItem *toplevel)
   GNUNET_CONTAINER_multihashmap_destroy (tc.metacounter);
 }
 
+
+/**
+ * Release memory of a share item tree.
+ *
+ * @param toplevel toplevel of the tree to be freed
+ */
+void
+GNUNET_FS_share_tree_free (struct GNUNET_FS_ShareTreeItem *toplevel)
+{
+  struct GNUNET_FS_ShareTreeItem *pos;
+
+  while (NULL != (pos = toplevel->children_head))
+    GNUNET_FS_share_tree_free (pos);
+  if (NULL != toplevel->parent)
+    GNUNET_CONTAINER_DLL_remove (toplevel->parent->children_head,
+                                toplevel->parent->children_tail,
+                                toplevel);
+  GNUNET_CONTAINER_meta_data_destroy (toplevel->meta);
+  GNUNET_FS_uri_destroy (toplevel->ksk_uri);
+  GNUNET_free_non_null (toplevel->filename);
+  GNUNET_free_non_null (toplevel->short_filename);
+  GNUNET_free (toplevel);
+}
+
 /* end fs_sharetree.c */