From 90c68b22981cffe5543e6340516d4241b515cdb5 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 10 Aug 2008 13:20:47 +0200 Subject: [PATCH] fix adding songs to empty playlist --- src/ncmpcpp.cpp | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index 291486ea..dbc46c49 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -580,16 +580,17 @@ int main(int argc, char *argv[]) } case MPD_DATA_TYPE_SONG: { - char *file = (char *)vNameList[ci].c_str(); - mpd_Song *test = mpd_database_get_fileinfo(conn, file); + string &file = vNameList[ci]; + mpd_Song *test = mpd_database_get_fileinfo(conn, (char *) file.c_str()); if (test) { - mpd_playlist_add(conn, file); - Song &s = *vPlaylist.back(); + mpd_playlist_add(conn, (char *) file.c_str()); + Song s = test; mpd_player_play_id(conn, s.GetID()); ShowMessage("Added to playlist: " + OmitBBCodes(DisplaySong(s))); mBrowser->Refresh(); } + mpd_freeSong(test); break; } case MPD_DATA_TYPE_PLAYLIST: @@ -898,16 +899,16 @@ int main(int argc, char *argv[]) default: { int ci = mSearcher->GetRealChoice()-1; - char *file = (char *)vSearched[ci-1].GetFile().c_str(); - mpd_Song *test = mpd_database_get_fileinfo(conn, file); + const string &file = vSearched[ci-1].GetFile(); + mpd_Song *test = mpd_database_get_fileinfo(conn, (char *) file.c_str()); if (test) { - mpd_playlist_add(conn, file); - Song &s = *vPlaylist.back(); + mpd_playlist_add(conn, (char *) file.c_str()); + Song s = test; mpd_player_play_id(conn, s.GetID()); ShowMessage("Added to playlist: " + OmitBBCodes(DisplaySong(s))); - mSearcher->Refresh(); } + mpd_freeSong(test); break; } } @@ -1012,10 +1013,15 @@ int main(int argc, char *argv[]) } case MPD_DATA_TYPE_SONG: { - mpd_playlist_queue_add(conn, (char *) vNameList[ci].c_str()); - Song &s = *vPlaylist.back(); - ShowMessage("Added to playlist: " + OmitBBCodes(DisplaySong(s))); - mpd_playlist_queue_commit(conn); + mpd_Song *test = mpd_database_get_fileinfo(conn, (char *) vNameList[ci].c_str()); + if (test) + { + mpd_playlist_queue_add(conn, (char *) vNameList[ci].c_str()); + Song s = test; + ShowMessage("Added to playlist: " + OmitBBCodes(DisplaySong(s))); + mpd_playlist_queue_commit(conn); + } + mpd_freeSong(test); break; } case MPD_DATA_TYPE_PLAYLIST: