From 615972b74fffd7ed6b9d8c8b29b347f73749c6a9 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 23 Apr 2021 13:48:07 -0700 Subject: [PATCH] QLockFile: don't use the local timezone to compare file times There's no need to find the local time zone and do expensive conversions to compare regular, old seconds-since-1970 to the time now. Task-number: QTBUG-93069 Change-Id: I6cdea00671e8479b9c50fffd167897b91a04ce03 Reviewed-by: Allan Sandfeld Jensen --- src/corelib/io/qfilesystemmetadata_p.h | 8 ++++---- src/corelib/io/qlockfile.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/corelib/io/qfilesystemmetadata_p.h b/src/corelib/io/qfilesystemmetadata_p.h index dbd89f59039..1445b83ec2c 100644 --- a/src/corelib/io/qfilesystemmetadata_p.h +++ b/src/corelib/io/qfilesystemmetadata_p.h @@ -298,13 +298,13 @@ inline QDateTime QFileSystemMetaData::fileTime(QAbstractFileEngine::FileTime tim #if defined(Q_OS_UNIX) inline QDateTime QFileSystemMetaData::birthTime() const -{ return birthTime_ ? QDateTime::fromMSecsSinceEpoch(birthTime_) : QDateTime(); } +{ return birthTime_ ? QDateTime::fromMSecsSinceEpoch(birthTime_, Qt::UTC) : QDateTime(); } inline QDateTime QFileSystemMetaData::metadataChangeTime() const -{ return metadataChangeTime_ ? QDateTime::fromMSecsSinceEpoch(metadataChangeTime_) : QDateTime(); } +{ return metadataChangeTime_ ? QDateTime::fromMSecsSinceEpoch(metadataChangeTime_, Qt::UTC) : QDateTime(); } inline QDateTime QFileSystemMetaData::modificationTime() const -{ return modificationTime_ ? QDateTime::fromMSecsSinceEpoch(modificationTime_) : QDateTime(); } +{ return modificationTime_ ? QDateTime::fromMSecsSinceEpoch(modificationTime_, Qt::UTC) : QDateTime(); } inline QDateTime QFileSystemMetaData::accessTime() const -{ return accessTime_ ? QDateTime::fromMSecsSinceEpoch(accessTime_) : QDateTime(); } +{ return accessTime_ ? QDateTime::fromMSecsSinceEpoch(accessTime_, Qt::UTC) : QDateTime(); } inline uint QFileSystemMetaData::userId() const { return userId_; } inline uint QFileSystemMetaData::groupId() const { return groupId_; } diff --git a/src/corelib/io/qlockfile.cpp b/src/corelib/io/qlockfile.cpp index 032be3b7a1f..e6812ceddeb 100644 --- a/src/corelib/io/qlockfile.cpp +++ b/src/corelib/io/qlockfile.cpp @@ -289,7 +289,7 @@ bool QLockFile::tryLock(int timeout) return false; case LockFailedError: if (!d->isLocked && d->isApparentlyStale()) { - if (Q_UNLIKELY(QFileInfo(d->fileName).lastModified() > QDateTime::currentDateTime())) + if (Q_UNLIKELY(QFileInfo(d->fileName).lastModified() > QDateTime::currentDateTimeUtc())) qInfo("QLockFile: Lock file '%ls' has a modification time in the future", qUtf16Printable(d->fileName)); // Stale lock from another thread/process // Ensure two processes don't remove it at the same time