directory: free empty directories after removing them (memleak)

dirvec_delete() does not free the object, we have to call
directory_free() afterwards.
This commit is contained in:
Max Kellermann 2009-08-14 11:52:00 +02:00
parent 5d6f7803e1
commit 7dddd9beda
2 changed files with 9 additions and 3 deletions

1
NEWS
View File

@ -8,6 +8,7 @@ ver 0.15.2 (2009/??/??)
- flac: don't allocate cuesheet twice (memleak)
* update: free empty path string (memleak)
* update: free temporary string in container scan (memleak)
* directory: free empty directories after removing them (memleak)
ver 0.15.1 (2009/07/15)

View File

@ -73,9 +73,14 @@ directory_prune_empty(struct directory *directory)
struct dirvec *dv = &directory->children;
for (i = dv->nr; --i >= 0; ) {
directory_prune_empty(dv->base[i]);
if (directory_is_empty(dv->base[i]))
dirvec_delete(dv, dv->base[i]);
struct directory *child = dv->base[i];
directory_prune_empty(child);
if (directory_is_empty(child)) {
dirvec_delete(dv, child);
directory_free(child);
}
}
if (!dv->nr)
dirvec_destroy(dv);