diff options
author | Max Kellermann <max@duempel.org> | 2008-10-31 09:20:02 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-10-31 09:20:02 +0100 |
commit | 8f9d9cc04233bffa23ab3dc071b4a3f256b31399 (patch) | |
tree | 9930d2789a7d5c17cab136f9453a96e97629dd08 | |
parent | ea515494cb23160c2eb05835411b8927a025026f (diff) | |
download | mpd-8f9d9cc04233bffa23ab3dc071b4a3f256b31399.tar.gz mpd-8f9d9cc04233bffa23ab3dc071b4a3f256b31399.tar.xz mpd-8f9d9cc04233bffa23ab3dc071b4a3f256b31399.zip |
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.
-rw-r--r-- | src/directory.c | 7 |
1 files changed, 7 insertions, 0 deletions
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); |