diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2020-08-02 12:07:48 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2020-08-02 12:07:48 (GMT) |
commit | 713a6167733e660dcdfd48a36134576aaa8b80d3 (patch) | |
tree | 96f03491222fcd9210882c386ff4d989ef8e81d0 | |
parent | 135dcdffe700a3958f06de30e576bf1ee4c15584 (diff) | |
download | Doxygen-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.cpp | 13 |
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 ); |