From 23e46b38ca03aa7d83c93df0df51ce5e986b7928 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 8 Dec 2009 08:06:10 +0100 Subject: mapper: fix memory leak when playlist_directory is not set Don't allocate the file name before the playlist_dir==NULL check. --- src/mapper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mapper.c') diff --git a/src/mapper.c b/src/mapper.c index aac7c0c48..5c19021f9 100644 --- a/src/mapper.c +++ b/src/mapper.c @@ -221,12 +221,12 @@ map_spl_path(void) char * map_spl_utf8_to_fs(const char *name) { - char *filename = g_strconcat(name, PLAYLIST_FILE_SUFFIX, NULL); - char *path; + char *filename, *path; if (playlist_dir == NULL) return NULL; + filename = g_strconcat(name, PLAYLIST_FILE_SUFFIX, NULL); path = g_build_filename(playlist_dir, filename, NULL); g_free(filename); -- cgit v1.2.3 From f4b707b4ca6451fcb1a6af6d3f2e58579b3c01a5 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 8 Dec 2009 08:17:35 +0100 Subject: mapper: apply filesystem_charset to playlists This fixes an inconsistency in the stored playlist subsystem: when obtaining the list of playlists (listplaylist, listplaylistinfo), the file names in the playlist directory are converted to UTF-8 (according to filesystem_charset), but when saving or loading playlists, the filesystem_charset setting was ignored. --- src/mapper.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/mapper.c') diff --git a/src/mapper.c b/src/mapper.c index 5c19021f9..5518cb79e 100644 --- a/src/mapper.c +++ b/src/mapper.c @@ -221,14 +221,19 @@ map_spl_path(void) char * map_spl_utf8_to_fs(const char *name) { - char *filename, *path; + char *filename_utf8, *filename_fs, *path; if (playlist_dir == NULL) return NULL; - filename = g_strconcat(name, PLAYLIST_FILE_SUFFIX, NULL); - path = g_build_filename(playlist_dir, filename, NULL); - g_free(filename); + filename_utf8 = g_strconcat(name, PLAYLIST_FILE_SUFFIX, NULL); + filename_fs = utf8_to_fs_charset(filename_utf8); + g_free(filename_utf8); + if (filename_fs == NULL) + return NULL; + + path = g_build_filename(playlist_dir, filename_fs, NULL); + g_free(filename_fs); return path; } -- cgit v1.2.3