From 1ba42c10bbd2ac1f9a7bb9be0278c41959d7a30b Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 2 May 2020 22:59:54 +0200 Subject: [PATCH] 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 --- src/corelib/io/qdiriterator.cpp | 8 ++++---- 1 file 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); }