diff options
Diffstat (limited to 'src/playlist_song.c')
-rw-r--r-- | src/playlist_song.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/playlist_song.c b/src/playlist_song.c index 29efef2e3..a3d9ab4d9 100644 --- a/src/playlist_song.c +++ b/src/playlist_song.c @@ -23,6 +23,7 @@ #include "mapper.h" #include "song.h" #include "uri.h" +#include "path.h" #include "ls.h" #include "tag.h" @@ -62,8 +63,14 @@ apply_song_metadata(struct song *dest, const struct song *src) if (path_fs == NULL) return dest; - tmp = song_file_new(path_fs, NULL); - g_free(path_fs); + char *path_utf8 = fs_charset_to_utf8(path_fs); + if (path_utf8 != NULL) + g_free(path_fs); + else + path_utf8 = path_fs; + + tmp = song_file_new(path_utf8, NULL); + g_free(path_utf8); merge_song_metadata(tmp, dest, src); } else { |