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.
This commit is contained in:
Max Kellermann 2008-10-31 09:20:02 +01:00
parent ea515494cb
commit 8f9d9cc042

View File

@ -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);