diff options
Diffstat (limited to 'src/corelib/io')
-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); } |