Commit 8f9d9cc0 authored by Max Kellermann's avatar Max Kellermann

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.
parent ea515494
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
*/ */
#include "directory.h" #include "directory.h"
#include "song.h"
#include "utils.h" #include "utils.h"
#include "path.h" #include "path.h"
...@@ -44,6 +45,12 @@ directory_new(const char *path, struct directory *parent) ...@@ -44,6 +45,12 @@ directory_new(const char *path, struct directory *parent)
void void
directory_free(struct directory *directory) 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); dirvec_destroy(&directory->children);
songvec_destroy(&directory->songs); songvec_destroy(&directory->songs);
free(directory); free(directory);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment