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.
This commit is contained in:
@@ -132,6 +132,9 @@ delete_each_song(struct song *song, G_GNUC_UNUSED void *data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
delete_directory(struct directory *directory);
|
||||
|
||||
/**
|
||||
* Recursively remove all sub directories and songs from a directory,
|
||||
* leaving an empty directory.
|
||||
@@ -142,8 +145,9 @@ clear_directory(struct directory *directory)
|
||||
int i;
|
||||
|
||||
for (i = directory->children.nr; --i >= 0;)
|
||||
clear_directory(directory->children.base[i]);
|
||||
dirvec_clear(&directory->children);
|
||||
delete_directory(directory->children.base[i]);
|
||||
|
||||
assert(directory->children.nr == 0);
|
||||
|
||||
songvec_for_each(&directory->songs, delete_each_song, directory);
|
||||
}
|
||||
|
Reference in New Issue
Block a user