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:
parent
16bab6019b
commit
df9245c2aa
1
NEWS
1
NEWS
@ -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)
|
|||||||
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)
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user