diff options
author | Max Kellermann <max@duempel.org> | 2009-10-16 17:38:15 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-10-16 17:38:15 +0200 |
commit | 8ae5bc4d790d026a25049dd213814429ff8c8b2b (patch) | |
tree | c20be1f33b854ce31cd47a4adf39a231573f3fb5 /src | |
parent | d1ba27d820dc96c41cc3814801c12392060692dc (diff) | |
download | mpd-8ae5bc4d790d026a25049dd213814429ff8c8b2b.tar.gz mpd-8ae5bc4d790d026a25049dd213814429ff8c8b2b.tar.xz mpd-8ae5bc4d790d026a25049dd213814429ff8c8b2b.zip |
update: fixed memory leak during container scan
The return value of map_directory_child_fs() must be freed.
Diffstat (limited to 'src')
-rw-r--r-- | src/update.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/update.c b/src/update.c index 4aa48f25c..24960b449 100644 --- a/src/update.c +++ b/src/update.c @@ -459,17 +459,20 @@ update_container_file( struct directory* directory, while ((vtrack = plugin->container_scan(pathname, ++tnum)) != NULL) { struct song* song = song_file_new(vtrack, contdir); + char *child_path_fs; // shouldn't be necessary but it's there.. song->mtime = st->st_mtime; - song->tag = plugin->tag_dup(map_directory_child_fs(contdir, vtrack)); + child_path_fs = map_directory_child_fs(contdir, vtrack); + g_free(vtrack); + + song->tag = plugin->tag_dup(child_path_fs); + g_free(child_path_fs); songvec_add(&contdir->songs, song); modified = true; - - g_free(vtrack); } g_free(pathname); |