diff --git a/src/collection/collectionwatcher.cpp b/src/collection/collectionwatcher.cpp index e9ae756a8..df8ab9236 100644 --- a/src/collection/collectionwatcher.cpp +++ b/src/collection/collectionwatcher.cpp @@ -790,6 +790,7 @@ SongList CollectionWatcher::ScanNewFile(const QString &file, const QString &path // Playlist parser for CUEs considers every entry in sheet valid and we don't want invalid media getting into collection! QString file_nfd = file.normalized(QString::NormalizationForm_D); SongList cue_congs = cue_parser_->Load(&cue_file, matching_cue, path, false); + cue_file.close(); songs.reserve(cue_congs.count()); for (Song &cue_song : cue_congs) { cue_song.set_source(source_); diff --git a/src/core/commandlineoptions.cpp b/src/core/commandlineoptions.cpp index 2605caa7e..39be4067b 100644 --- a/src/core/commandlineoptions.cpp +++ b/src/core/commandlineoptions.cpp @@ -340,11 +340,11 @@ bool CommandlineOptions::contains_play_options() const { QByteArray CommandlineOptions::Serialize() const { QBuffer buf; - buf.open(QIODevice::WriteOnly); - - QDataStream s(&buf); - s << *this; - buf.close(); + if (buf.open(QIODevice::WriteOnly)) { + QDataStream s(&buf); + s << *this; + buf.close(); + } return buf.data().toBase64(); @@ -354,10 +354,10 @@ void CommandlineOptions::Load(const QByteArray &serialized) { QByteArray copy = QByteArray::fromBase64(serialized); QBuffer buf(©); - buf.open(QIODevice::ReadOnly); - - QDataStream s(&buf); - s >> *this; + if (buf.open(QIODevice::ReadOnly)) { + QDataStream s(&buf); + s >> *this; + } } diff --git a/src/core/database.cpp b/src/core/database.cpp index f0c922f4f..665d93d82 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -387,9 +387,12 @@ void Database::ExecSchemaCommandsFromFile(QSqlDatabase &db, const QString &filen // Open and read the database schema QFile schema_file(filename); - if (!schema_file.open(QIODevice::ReadOnly)) + if (!schema_file.open(QIODevice::ReadOnly)) { qFatal("Couldn't open schema file %s", filename.toUtf8().constData()); + return; + } ExecSchemaCommands(db, QString::fromUtf8(schema_file.readAll()), schema_version, in_transaction); + schema_file.close(); } diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp index 2cd4569c1..3a59a3b45 100644 --- a/src/core/songloader.cpp +++ b/src/core/songloader.cpp @@ -358,10 +358,13 @@ void SongLoader::EffectiveSongLoad(Song *song) { } void SongLoader::LoadPlaylist(ParserBase *parser, const QString &filename) { + QFile file(filename); - file.open(QIODevice::ReadOnly); - songs_ = parser->Load(&file, filename, QFileInfo(filename).path()); - file.close(); + if (file.open(QIODevice::ReadOnly)) { + songs_ = parser->Load(&file, filename, QFileInfo(filename).path()); + file.close(); + } + } static bool CompareSongs(const Song &left, const Song &right) { @@ -429,9 +432,10 @@ void SongLoader::StopTypefind() { // Parse the playlist QBuffer buf(&buffer_); - buf.open(QIODevice::ReadOnly); - songs_ = parser_->Load(&buf); - buf.close(); + if (buf.open(QIODevice::ReadOnly)) { + songs_ = parser_->Load(&buf); + buf.close(); + } } else if (success_) { diff --git a/src/internet/localredirectserver.cpp b/src/internet/localredirectserver.cpp index 7e54669ff..b2494f90e 100644 --- a/src/internet/localredirectserver.cpp +++ b/src/internet/localredirectserver.cpp @@ -341,8 +341,9 @@ void LocalRedirectServer::ReadyRead() { void LocalRedirectServer::WriteTemplate() const { QFile page_file(":/html/oauthsuccess.html"); - page_file.open(QIODevice::ReadOnly); + if (!page_file.open(QIODevice::ReadOnly)) return; QString page_data = QString::fromUtf8(page_file.readAll()); + page_file.close(); QRegularExpression tr_regexp("tr\\(\"([^\"]+)\"\\)"); int offset = 0; @@ -359,13 +360,15 @@ void LocalRedirectServer::WriteTemplate() const { } QBuffer image_buffer; - image_buffer.open(QIODevice::ReadWrite); - QApplication::style() - ->standardIcon(QStyle::SP_DialogOkButton) - .pixmap(16) - .toImage() - .save(&image_buffer, "PNG"); - page_data.replace("@IMAGE_DATA@", image_buffer.data().toBase64()); + if (image_buffer.open(QIODevice::ReadWrite)) { + QApplication::style() + ->standardIcon(QStyle::SP_DialogOkButton) + .pixmap(16) + .toImage() + .save(&image_buffer, "PNG"); + page_data.replace("@IMAGE_DATA@", image_buffer.data().toBase64()); + image_buffer.close(); + } socket_->write("HTTP/1.0 200 OK\r\n"); socket_->write("Content-type: text/html;charset=UTF-8\r\n"); diff --git a/src/main.cpp b/src/main.cpp index 0a357afc2..915477084 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -222,7 +222,9 @@ int main(int argc, char *argv[]) { // Create the file if it doesn't exist already if (!QFile::exists(s.fileName())) { QFile file(s.fileName()); - file.open(QIODevice::WriteOnly); + if (file.open(QIODevice::WriteOnly)) { + file.close(); + } } // Set -rw------- diff --git a/src/moodbar/moodbarloader.cpp b/src/moodbar/moodbarloader.cpp index 73e1e06a4..92c9d0a70 100644 --- a/src/moodbar/moodbarloader.cpp +++ b/src/moodbar/moodbarloader.cpp @@ -113,6 +113,7 @@ MoodbarLoader::Result MoodbarLoader::Load(const QUrl &url, QByteArray *data, Moo if (f.open(QIODevice::ReadOnly)) { qLog(Info) << "Loading moodbar data from" << possible_mood_file; *data = f.readAll(); + f.close(); return Loaded; } } @@ -184,6 +185,7 @@ void MoodbarLoader::RequestFinished(MoodbarPipeline *request, const QUrl &url) { QFile mood_file(mood_filename); if (mood_file.open(QIODevice::WriteOnly)) { mood_file.write(request->data()); + mood_file.close(); #ifdef Q_OS_WIN32 if (!SetFileAttributes((LPCTSTR)mood_filename.utf16(), FILE_ATTRIBUTE_HIDDEN)) { diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 1c247ef5d..f9cd90511 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -1240,7 +1240,7 @@ QMimeData *Playlist::mimeData(const QModelIndexList &indexes) const { } QBuffer buf; - buf.open(QIODevice::WriteOnly); + if (!buf.open(QIODevice::WriteOnly)) return nullptr; QDataStream stream(&buf); const Playlist *self = this; diff --git a/src/playlist/playlistbackend.cpp b/src/playlist/playlistbackend.cpp index 60fe28737..279b34115 100644 --- a/src/playlist/playlistbackend.cpp +++ b/src/playlist/playlistbackend.cpp @@ -294,6 +294,7 @@ PlaylistItemPtr PlaylistBackend::RestoreCueData(PlaylistItemPtr item, std::share if (!cue_file.open(QIODevice::ReadOnly)) return item; song_list = cue_parser.Load(&cue_file, cue_path, QDir(cue_path.section('/', 0, -2))); + cue_file.close(); state->cached_cues_[cue_path] = song_list; } else { diff --git a/src/playlistparsers/asxparser.cpp b/src/playlistparsers/asxparser.cpp index f376f3dd2..0ba1625c5 100644 --- a/src/playlistparsers/asxparser.cpp +++ b/src/playlistparsers/asxparser.cpp @@ -63,15 +63,15 @@ SongList ASXParser::Load(QIODevice *device, const QString &playlist_path, const } QBuffer buffer(&data); - buffer.open(QIODevice::ReadOnly); - - SongList ret; + if (!buffer.open(QIODevice::ReadOnly)) return SongList(); QXmlStreamReader reader(&buffer); if (!Utilities::ParseUntilElementCI(&reader, "asx")) { - return ret; + buffer.close(); + return SongList(); } + SongList ret; while (!reader.atEnd() && Utilities::ParseUntilElementCI(&reader, "entry")) { Song song = ParseTrack(&reader, dir, collection_search); if (song.is_valid()) { @@ -79,6 +79,8 @@ SongList ASXParser::Load(QIODevice *device, const QString &playlist_path, const } } + buffer.close(); + return ret; } diff --git a/src/playlistparsers/m3uparser.cpp b/src/playlistparsers/m3uparser.cpp index 6ceefae0a..0db0091a9 100644 --- a/src/playlistparsers/m3uparser.cpp +++ b/src/playlistparsers/m3uparser.cpp @@ -46,8 +46,6 @@ SongList M3UParser::Load(QIODevice *device, const QString &playlist_path, const Q_UNUSED(playlist_path); - SongList ret; - M3UType type = STANDARD; Metadata current_metadata; @@ -56,7 +54,7 @@ SongList M3UParser::Load(QIODevice *device, const QString &playlist_path, const data.replace("\n\n", "\n"); QByteArray bytes = data.toUtf8(); QBuffer buffer(&bytes); - buffer.open(QIODevice::ReadOnly); + if (!buffer.open(QIODevice::ReadOnly)) return SongList(); QString line = QString::fromUtf8(buffer.readLine()).trimmed(); if (line.startsWith("#EXTM3U")) { @@ -65,6 +63,7 @@ SongList M3UParser::Load(QIODevice *device, const QString &playlist_path, const line = QString::fromUtf8(buffer.readLine()).trimmed(); } + SongList ret; forever { if (line.startsWith('#')) { // Extended info or comment. @@ -95,6 +94,8 @@ SongList M3UParser::Load(QIODevice *device, const QString &playlist_path, const line = QString::fromUtf8(buffer.readLine()).trimmed(); } + buffer.close(); + return ret; } diff --git a/src/playlistparsers/playlistparser.cpp b/src/playlistparsers/playlistparser.cpp index f2c399ffa..54379d101 100644 --- a/src/playlistparsers/playlistparser.cpp +++ b/src/playlistparsers/playlistparser.cpp @@ -166,9 +166,12 @@ SongList PlaylistParser::LoadFromFile(const QString &filename) const { // Open the file QFile file(filename); - file.open(QIODevice::ReadOnly); + if (!file.open(QIODevice::ReadOnly)) return SongList(); - return parser->Load(&file, filename, info.absolutePath()); + SongList ret = parser->Load(&file, filename, info.absolutePath()); + file.close(); + + return ret; } diff --git a/src/queue/queue.cpp b/src/queue/queue.cpp index fae79db46..d2ae0876b 100644 --- a/src/queue/queue.cpp +++ b/src/queue/queue.cpp @@ -342,12 +342,12 @@ QMimeData *Queue::mimeData(const QModelIndexList &indexes) const { } QBuffer buf; - buf.open(QIODevice::WriteOnly); - QDataStream stream(&buf); - stream << rows; - buf.close(); - - data->setData(kRowsMimetype, buf.data()); + if (buf.open(QIODevice::WriteOnly)) { + QDataStream stream(&buf); + stream << rows; + buf.close(); + data->setData(kRowsMimetype, buf.data()); + } return data; diff --git a/src/settings/contextsettingspage.cpp b/src/settings/contextsettingspage.cpp index 6527c6b66..da1ebb607 100644 --- a/src/settings/contextsettingspage.cpp +++ b/src/settings/contextsettingspage.cpp @@ -120,6 +120,7 @@ ContextSettingsPage::ContextSettingsPage(SettingsDialog *dialog, QWidget *parent QString text = file.readAll(); ui_->preview_headline->setText(text); ui_->preview_normal->setText(text); + file.close(); } } diff --git a/src/smartplaylists/smartplaylistsearchtermwidget.cpp b/src/smartplaylists/smartplaylistsearchtermwidget.cpp index 14e4066c9..f9d70d34a 100644 --- a/src/smartplaylists/smartplaylistsearchtermwidget.cpp +++ b/src/smartplaylists/smartplaylistsearchtermwidget.cpp @@ -124,14 +124,16 @@ SmartPlaylistSearchTermWidget::SmartPlaylistSearchTermWidget(CollectionBackend * // Set stylesheet QFile stylesheet_file(":/style/smartplaylistsearchterm.css"); - stylesheet_file.open(QIODevice::ReadOnly); - QString stylesheet = QString::fromLatin1(stylesheet_file.readAll()); - const QColor base(222, 97, 97, 128); - stylesheet.replace("%light2", Utilities::ColorToRgba(base.lighter(140))); - stylesheet.replace("%light", Utilities::ColorToRgba(base.lighter(120))); - stylesheet.replace("%dark", Utilities::ColorToRgba(base.darker(120))); - stylesheet.replace("%base", Utilities::ColorToRgba(base)); - setStyleSheet(stylesheet); + if (stylesheet_file.open(QIODevice::ReadOnly)) { + QString stylesheet = QString::fromLatin1(stylesheet_file.readAll()); + stylesheet_file.close(); + const QColor base(222, 97, 97, 128); + stylesheet.replace("%light2", Utilities::ColorToRgba(base.lighter(140))); + stylesheet.replace("%light", Utilities::ColorToRgba(base.lighter(120))); + stylesheet.replace("%dark", Utilities::ColorToRgba(base.darker(120))); + stylesheet.replace("%base", Utilities::ColorToRgba(base)); + setStyleSheet(stylesheet); + } }