From cb9b42b493d168544ec8e4d6ff10c74cbdc70942 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 1 Jul 2017 14:38:55 -0700 Subject: QFileSystemEngine: a file only exists if its link count is not 0 QFileSystemMetaData::fillFromStatBuf is used when filling in the results from both stat() as well as fstat(). Obviously the file exists if it was stat()ed but not necessarily so by fstat(): we could be operating on a file descriptor referring to an unlinked file or an O_TMPFILE. Change-Id: I8d96dea9955d4c749b99fffd14cd52a8c8dd9ca1 Reviewed-by: Simon Hausmann --- src/corelib/io/qfsfileengine_unix.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/corelib/io/qfsfileengine_unix.cpp') diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp index 69961ff76a..dadd5d9bcf 100644 --- a/src/corelib/io/qfsfileengine_unix.cpp +++ b/src/corelib/io/qfsfileengine_unix.cpp @@ -495,11 +495,14 @@ QAbstractFileEngine::FileFlags QFSFileEngine::fileFlags(FileFlags type) const | QFileSystemMetaData::LinkType | QFileSystemMetaData::FileType | QFileSystemMetaData::DirectoryType - | QFileSystemMetaData::BundleType; + | QFileSystemMetaData::BundleType + | QFileSystemMetaData::WasDeletedAttribute; if (type & FlagsMask) queryFlags |= QFileSystemMetaData::HiddenAttribute | QFileSystemMetaData::ExistsAttribute; + else if (type & ExistsFlag) + queryFlags |= QFileSystemMetaData::WasDeletedAttribute; queryFlags |= QFileSystemMetaData::LinkType; @@ -531,7 +534,8 @@ QAbstractFileEngine::FileFlags QFSFileEngine::fileFlags(FileFlags type) const } if (type & FlagsMask) { - if (exists) + // the inode existing does not mean the file exists + if (!d->metaData.wasDeleted()) ret |= ExistsFlag; if (d->fileEntry.isRoot()) ret |= RootFlag; -- cgit v1.2.3