diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2020-05-02 22:59:54 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2020-05-03 08:16:23 +0200 |
commit | 1ba42c10bbd2ac1f9a7bb9be0278c41959d7a30b (patch) | |
tree | 54c9b0df77cbefccf574cc92ed54018c7e21275b /src/corelib/io/qdiriterator.cpp | |
parent | e62f6ffcb3b8a5bbeae7e6ce2d51f1fd0c96278c (diff) |
QDirIterator: move a guard condition from caller to callee
The private pushDirectory() method is only called from the
QDirIterator ctor and from checkAndPushDirectory(). Moving the loop
check from checkAndPushDirectory() to pushDirectory() therefore
doesn't change anything, since, for the ctor case, it will always
fail.
This is preparation of using QDuplicateTracker for `visitedLinks`.
Change-Id: I609934002dabebf0a3e7a516b8398eae7db770d5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io/qdiriterator.cpp')
-rw-r--r-- | src/corelib/io/qdiriterator.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/corelib/io/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp index 30d1c211c7..f6d337bb74 100644 --- a/src/corelib/io/qdiriterator.cpp +++ b/src/corelib/io/qdiriterator.cpp @@ -210,6 +210,10 @@ void QDirIteratorPrivate::pushDirectory(const QFileInfo &fileInfo) path = fileInfo.canonicalFilePath(); #endif + // Stop link loops + if (visitedLinks.contains(fileInfo.canonicalFilePath())) + return; + if (iteratorFlags & QDirIterator::FollowSymlinks) visitedLinks << fileInfo.canonicalFilePath(); @@ -318,10 +322,6 @@ void QDirIteratorPrivate::checkAndPushDirectory(const QFileInfo &fileInfo) if (!(filters & QDir::AllDirs) && !(filters & QDir::Hidden) && fileInfo.isHidden()) return; - // Stop link loops - if (visitedLinks.contains(fileInfo.canonicalFilePath())) - return; - pushDirectory(fileInfo); } |