summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/doxygen.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 9e2f737..5f8adc2 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -9848,7 +9848,6 @@ static std::string resolveSymlink(const std::string &path)
return Dir::cleanDirPath(result.str());
}
-static std::mutex g_pathsVisitedMutex;
static StringUnorderedSet g_pathsVisited(1009);
//----------------------------------------------------------------------------
@@ -9875,15 +9874,24 @@ static void readDir(FileInfo *fi,
{
paths->insert(dirName);
}
+ //printf("%s isSymLink()=%d\n",qPrint(dirName),fi->isSymLink());
if (fi->isSymLink())
{
dirName = resolveSymlink(dirName);
- if (dirName.empty()) return; // recursive symlink
+ if (dirName.empty())
+ {
+ //printf("RECURSIVE SYMLINK: %s\n",qPrint(dirName));
+ return; // recursive symlink
+ }
+ }
- std::lock_guard<std::mutex> lock(g_pathsVisitedMutex);
- if (g_pathsVisited.find(dirName)!=g_pathsVisited.end()) return; // already visited path
- g_pathsVisited.insert(dirName);
+ if (g_pathsVisited.find(dirName)!=g_pathsVisited.end())
+ {
+ //printf("PATH ALREADY VISITED: %s\n",qPrint(dirName));
+ return; // already visited path
}
+ g_pathsVisited.insert(dirName);
+
Dir dir(dirName);
msg("Searching for files in directory %s\n", qPrint(fi->absFilePath()));
//printf("killSet=%p count=%d\n",killSet,killSet ? (int)killSet->count() : -1);
@@ -9967,6 +9975,8 @@ void readFileOrDirectory(const QCString &s,
// strip trailing slashes
if (s.isEmpty()) return;
+ g_pathsVisited.clear();
+
FileInfo fi(s.str());
//printf("readFileOrDirectory(%s)\n",s);
{