From 589d6419558c48277f2c14fd6ea8ed7aa23a34c7 Mon Sep 17 00:00:00 2001 From: Mark Furneaux Date: Wed, 21 Dec 2016 09:41:48 -0500 Subject: [PATCH] Fix playlist save on dialogs which do not enforce extensions (#5496) like GTK+ --- src/playlist/playlistmanager.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/playlist/playlistmanager.cpp b/src/playlist/playlistmanager.cpp index 258d6ffdd..5f13d30a8 100644 --- a/src/playlist/playlistmanager.cpp +++ b/src/playlist/playlistmanager.cpp @@ -233,6 +233,17 @@ void PlaylistManager::SaveWithUI(int id, const QString& suggested_filename) { return; } + // Check if the file extension is valid. Fallback to the default if not. + QFileInfo info(filename); + ParserBase* parser = parser_->ParserForExtension(info.suffix()); + if (!parser) { + qLog(Warning) << "Unknown file extension:" << info.suffix(); + filename = info.absolutePath() + "/" + info.fileName() + + "." + parser_->default_extension(); + info.setFile(filename); + filter = info.suffix(); + } + int p = settings.value(Playlist::kPathType, Playlist::Path_Automatic).toInt(); Playlist::Path path = static_cast(p); if (path == Playlist::Path_Ask_User) { @@ -246,7 +257,6 @@ void PlaylistManager::SaveWithUI(int id, const QString& suggested_filename) { settings.setValue("last_save_playlist", filename); settings.setValue("last_save_filter", filter); - QFileInfo info(filename); settings.setValue("last_save_extension", info.suffix()); Save(id == -1 ? current_id() : id, filename, path);