From 4d4b72f6be987fb49e2ccf00d3011b04aa688793 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Wed, 7 Oct 2015 23:44:24 +0200 Subject: [PATCH] FileNode_Delete: Delete child nodes --- src/filenode.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/filenode.c b/src/filenode.c index d298339..d83608e 100644 --- a/src/filenode.c +++ b/src/filenode.c @@ -50,10 +50,23 @@ FileNode *FileNode_Create() { } void FileNode_Delete(FileNode *fn) { + + FileNode *fileNodeChildAux = fn->child; + FileNode *fileNodeChild = fn->child; + while (fileNodeChild) { + fn->childCount--; + fileNodeChildAux = fileNodeChild; + fileNodeChild = fileNodeChild->next; + fileNodeChildAux->next = NULL; + if (fileNodeChildAux->parent == fn) { + fileNodeChildAux->parent = NULL; + FileNode_Delete(fileNodeChildAux); + } + } + fn->next = _free_filenode; _free_filenode = fn; _n_filenode--; - // FIXME: delete childs } void FileNode_AddChild(FileNode *fileNode, FileNode *file2) {