From 8f9d9cc04233bffa23ab3dc071b4a3f256b31399 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 31 Oct 2008 09:20:02 +0100 Subject: directory: directory_free() frees children directory_free() should free all of its children (subdirectories and songs). This way, db_finish() properly frees all allocated memory. --- src/directory.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/directory.c') diff --git a/src/directory.c b/src/directory.c index ba1ae8560..ccf2be7a4 100644 --- a/src/directory.c +++ b/src/directory.c @@ -17,6 +17,7 @@ */ #include "directory.h" +#include "song.h" #include "utils.h" #include "path.h" @@ -44,6 +45,12 @@ directory_new(const char *path, struct directory *parent) void directory_free(struct directory *directory) { + for (unsigned i = 0; i < directory->songs.nr; ++i) + song_free(directory->songs.base[i]); + + for (unsigned i = 0; i < directory->children.nr; ++i) + directory_free(directory->children.base[i]); + dirvec_destroy(&directory->children); songvec_destroy(&directory->songs); free(directory); -- cgit v1.2.3