summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qdiriterator.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2020-05-02 22:59:54 +0200
committerMarc Mutz <marc.mutz@kdab.com>2020-05-03 08:16:23 +0200
commit1ba42c10bbd2ac1f9a7bb9be0278c41959d7a30b (patch)
tree54c9b0df77cbefccf574cc92ed54018c7e21275b /src/corelib/io/qdiriterator.cpp
parente62f6ffcb3b8a5bbeae7e6ce2d51f1fd0c96278c (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.cpp8
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);
}