From 3d0b6e6ea1c373260006450c9d55ca8d926f2081 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sat, 30 Oct 2021 17:57:13 +0200 Subject: [PATCH] TagReader: Check for valid file times Fixes #815 --- ext/libstrawberry-tagreader/tagreadertaglib.cpp | 12 ++++++------ ext/libstrawberry-tagreader/tagreadertagparser.cpp | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ext/libstrawberry-tagreader/tagreadertaglib.cpp b/ext/libstrawberry-tagreader/tagreadertaglib.cpp index c8ebb2ff1..be58542cc 100644 --- a/ext/libstrawberry-tagreader/tagreadertaglib.cpp +++ b/ext/libstrawberry-tagreader/tagreadertaglib.cpp @@ -187,18 +187,18 @@ spb::tagreader::SongMetadata_FileType TagReaderTagLib::GuessFileType(TagLib::Fil void TagReaderTagLib::ReadFile(const QString &filename, spb::tagreader::SongMetadata *song) const { const QByteArray url(QUrl::fromLocalFile(filename).toEncoded()); - const QFileInfo info(filename); + const QFileInfo fileinfo(filename); qLog(Debug) << "Reading tags from" << filename; - song->set_basefilename(DataCommaSizeFromQString(info.fileName())); + song->set_basefilename(DataCommaSizeFromQString(fileinfo.fileName())); song->set_url(url.constData(), url.size()); - song->set_filesize(info.size()); - song->set_mtime(info.lastModified().toSecsSinceEpoch()); + song->set_filesize(fileinfo.size()); + song->set_mtime(fileinfo.lastModified().isValid() ? fileinfo.lastModified().toSecsSinceEpoch() : 0); #if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) - song->set_ctime(info.birthTime().isValid() ? info.birthTime().toSecsSinceEpoch() : info.lastModified().toSecsSinceEpoch()); + song->set_ctime(fileinfo.birthTime().isValid() ? fileinfo.birthTime().toSecsSinceEpoch() : fileinfo.lastModified().isValid() ? fileinfo.lastModified().toSecsSinceEpoch() : 0); #else - song->set_ctime(info.created().toSecsSinceEpoch()); + song->set_ctime(fileinfo.created().isValid() ? fileinfo.created().toSecsSinceEpoch() : fileinfo.lastModified().isValid() ? fileinfo.lastModified().toSecsSinceEpoch() : 0); #endif song->set_lastseen(QDateTime::currentDateTime().toSecsSinceEpoch()); diff --git a/ext/libstrawberry-tagreader/tagreadertagparser.cpp b/ext/libstrawberry-tagreader/tagreadertagparser.cpp index b777f11eb..a765c5778 100644 --- a/ext/libstrawberry-tagreader/tagreadertagparser.cpp +++ b/ext/libstrawberry-tagreader/tagreadertagparser.cpp @@ -106,11 +106,11 @@ void TagReaderTagParser::ReadFile(const QString &filename, spb::tagreader::SongM song->set_basefilename(DataCommaSizeFromQString(fileinfo.fileName())); song->set_url(url.constData(), url.size()); song->set_filesize(fileinfo.size()); - song->set_mtime(fileinfo.lastModified().toSecsSinceEpoch()); + song->set_mtime(fileinfo.lastModified().isValid() ? fileinfo.lastModified().toSecsSinceEpoch() : 0); #if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) - song->set_ctime(fileinfo.birthTime().isValid() ? fileinfo.birthTime().toSecsSinceEpoch() : fileinfo.lastModified().toSecsSinceEpoch()); + song->set_ctime(fileinfo.birthTime().isValid() ? fileinfo.birthTime().toSecsSinceEpoch() : fileinfo.lastModified().isValid() ? fileinfo.lastModified().toSecsSinceEpoch() : 0); #else - song->set_ctime(fileinfo.created().toSecsSinceEpoch()); + song->set_ctime(fileinfo.created().isValid() ? fileinfo.created().toSecsSinceEpoch() : fileinfo.lastModified().isValid() ? fileinfo.lastModified().toSecsSinceEpoch() : 0); #endif song->set_lastseen(QDateTime::currentDateTime().toSecsSinceEpoch());