summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2020-08-02 12:07:48 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2020-08-02 12:07:48 (GMT)
commit713a6167733e660dcdfd48a36134576aaa8b80d3 (patch)
tree96f03491222fcd9210882c386ff4d989ef8e81d0
parent135dcdffe700a3958f06de30e576bf1ee4c15584 (diff)
downloadDoxygen-713a6167733e660dcdfd48a36134576aaa8b80d3.zip
Doxygen-713a6167733e660dcdfd48a36134576aaa8b80d3.tar.gz
Doxygen-713a6167733e660dcdfd48a36134576aaa8b80d3.tar.bz2
Replaced QDict<void> by StringUnorderedSet used to keep track of visited paths
-rw-r--r--src/doxygen.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index dab7549..4bbabb2 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -9411,7 +9411,10 @@ static QCString resolveSymlink(QCString path)
return QDir::cleanDirPath(result).data();
}
-static QDict<void> g_pathsVisited(1009);
+#if MULTITHREADED_INPUT
+static std::mutex g_pathsVisitedMutex;
+#endif
+static StringUnorderedSet g_pathsVisited(1009);
//----------------------------------------------------------------------------
// Read all files matching at least one pattern in 'patList' in the
@@ -9441,8 +9444,12 @@ static int readDir(QFileInfo *fi,
{
dirName = resolveSymlink(dirName.data());
if (dirName.isEmpty()) return 0; // recursive symlink
- if (g_pathsVisited.find(dirName)) return 0; // already visited path
- g_pathsVisited.insert(dirName,(void*)0x8);
+
+#if MULTITHREADED_INPUT
+ std::lock_guard<std::mutex> lock(g_pathsVisitedMutex);
+#endif
+ if (g_pathsVisited.find(dirName.str())!=g_pathsVisited.end()) return 0; // already visited path
+ g_pathsVisited.insert(dirName.str());
}
QDir dir(dirName);
dir.setFilter( QDir::Files | QDir::Dirs | QDir::Hidden );