diff options
author | Markku Heikkila <markku.heikkila@digia.com> | 2012-06-05 15:50:13 +0300 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-09-13 19:33:08 +0200 |
commit | d1d4647b74e628eb991c09841d9a6dda7ac51f9c (patch) | |
tree | a2c97e5cfd2267a3fb277b4ea685cd54b72fff47 /src | |
parent | a42f1f9a5080c1087653c925ae7e453f09c84e57 (diff) |
Fixed: QFileInfo::lastModified() returning wrong value.
Fixed so that empty QDateTime is returned for non existing file.
Fixed also created() and lastRead() to return empty QDateTime for
non existing file.
QFileSystemEngine::fillMetaData() returned true for non existing
files. This was also corrected.
Task-number: QTBUG-25811
Change-Id: I523eb99e4405b4b813b2950f85cc646239181d07
Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org>
Reviewed-by: Christian Stromme <christian.stromme@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/io/qfileinfo.cpp | 9 | ||||
-rw-r--r-- | src/corelib/io/qfilesystemengine_unix.cpp | 5 | ||||
-rw-r--r-- | src/corelib/io/qfilesystemengine_win.cpp | 5 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp index 3a67b7061f..b58c3d3032 100644 --- a/src/corelib/io/qfileinfo.cpp +++ b/src/corelib/io/qfileinfo.cpp @@ -1259,7 +1259,8 @@ QDateTime QFileInfo::created() const return QDateTime(); if (d->fileEngine == 0) { if (!d->cache_enabled || !d->metaData.hasFlags(QFileSystemMetaData::CreationTime)) - QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::CreationTime); + if (!QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::CreationTime)) + return QDateTime(); return d->metaData.creationTime(); } return d->getFileTime(QAbstractFileEngine::CreationTime); @@ -1277,7 +1278,8 @@ QDateTime QFileInfo::lastModified() const return QDateTime(); if (d->fileEngine == 0) { if (!d->cache_enabled || !d->metaData.hasFlags(QFileSystemMetaData::ModificationTime)) - QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::ModificationTime); + if (!QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::ModificationTime)) + return QDateTime(); return d->metaData.modificationTime(); } return d->getFileTime(QAbstractFileEngine::ModificationTime); @@ -1298,7 +1300,8 @@ QDateTime QFileInfo::lastRead() const return QDateTime(); if (d->fileEngine == 0) { if (!d->cache_enabled || !d->metaData.hasFlags(QFileSystemMetaData::AccessTime)) - QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::AccessTime); + if (!QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::AccessTime)) + return QDateTime(); return d->metaData.accessTime(); } return d->getFileTime(QAbstractFileEngine::AccessTime); diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index 3d75b8cb09..4c295b157c 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -467,7 +467,10 @@ bool QFileSystemEngine::fillMetaData(const QFileSystemEntry &entry, QFileSystemM data.knownFlagsMask |= QFileSystemMetaData::BundleType; } #endif - + if (!entryExists) { + data.clearFlags(what); + return false; + } return data.hasFlags(what); } diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp index 6041edb252..ae8638ed5e 100644 --- a/src/corelib/io/qfilesystemengine_win.cpp +++ b/src/corelib/io/qfilesystemengine_win.cpp @@ -856,7 +856,10 @@ bool QFileSystemEngine::fillMetaData(const QFileSystemEntry &entry, QFileSystemM data.fillFromFindData(findData, false, fname.isDriveRoot()); } else { if (!tryFindFallback(fname, data)) - tryDriveUNCFallback(fname, data); + if (!tryDriveUNCFallback(fname, data)) { + SetErrorMode(oldmode); + return false; + } } SetErrorMode(oldmode); } |