Commit df9245c2 authored by Max Kellermann's avatar Max Kellermann

update: free deleted subdirectories

Use delete_directory() for removing sub directories instead of dirvec_clear(). This ensures that all memory occupied by subdirectories of deleted directories is freed.
parent 16bab601
...@@ -61,6 +61,7 @@ ver 0.14.2 (2009/??/??) ...@@ -61,6 +61,7 @@ ver 0.14.2 (2009/??/??)
* mapper: remove trailing slashes from music_directory * mapper: remove trailing slashes from music_directory
* player: set player error when output device fails * player: set player error when output device fails
* update: recursively purge deleted directories * update: recursively purge deleted directories
* update: free deleted subdirectories
ver 0.14.1 (2009/01/17) ver 0.14.1 (2009/01/17)
......
...@@ -132,6 +132,9 @@ delete_each_song(struct song *song, G_GNUC_UNUSED void *data) ...@@ -132,6 +132,9 @@ delete_each_song(struct song *song, G_GNUC_UNUSED void *data)
return 0; return 0;
} }
static void
delete_directory(struct directory *directory);
/** /**
* Recursively remove all sub directories and songs from a directory, * Recursively remove all sub directories and songs from a directory,
* leaving an empty directory. * leaving an empty directory.
...@@ -142,8 +145,9 @@ clear_directory(struct directory *directory) ...@@ -142,8 +145,9 @@ clear_directory(struct directory *directory)
int i; int i;
for (i = directory->children.nr; --i >= 0;) for (i = directory->children.nr; --i >= 0;)
clear_directory(directory->children.base[i]); delete_directory(directory->children.base[i]);
dirvec_clear(&directory->children);
assert(directory->children.nr == 0);
songvec_for_each(&directory->songs, delete_each_song, directory); songvec_for_each(&directory->songs, delete_each_song, 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