summaryrefslogtreecommitdiffstats
path: root/src/doxygen.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2020-09-30 19:30:35 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2020-09-30 19:30:35 (GMT)
commit02b8dea10813606db4a013799a3e354368d0280f (patch)
tree9406bf39d85a5c7639b15a1f086eaaa4c111f4cf /src/doxygen.cpp
parentdc33ea319801b75bc3523c24d95da972a6c1cbe2 (diff)
downloadDoxygen-02b8dea10813606db4a013799a3e354368d0280f.zip
Doxygen-02b8dea10813606db4a013799a3e354368d0280f.tar.gz
Doxygen-02b8dea10813606db4a013799a3e354368d0280f.tar.bz2
issue #8066: Doxygen crashes in ClangTUParser
Diffstat (limited to 'src/doxygen.cpp')
-rw-r--r--src/doxygen.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index d442857..b4a2932 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -7507,7 +7507,11 @@ static void generateFileSources()
{
for (const auto &fd : *fn)
{
- if (fd->isSource() && !fd->isReference())
+ if (fd->isSource() && !fd->isReference() &&
+ ((fd->generateSourceFile() && !g_useOutputTemplate) ||
+ (!fd->isReference() && Doxygen::parseSourcesNeeded)
+ )
+ )
{
auto clangParser = ClangParser::instance()->createTUParser(fd.get());
if (fd->generateSourceFile() && !g_useOutputTemplate) // sources need to be shown in the output
@@ -7565,9 +7569,9 @@ static void generateFileSources()
{
if (processedFiles.find(fd->absFilePath().str())==processedFiles.end()) // not yet processed
{
- auto clangParser = ClangParser::instance()->createTUParser(fd.get());
if (fd->generateSourceFile() && !Htags::useHtags && !g_useOutputTemplate) // sources need to be shown in the output
{
+ auto clangParser = ClangParser::instance()->createTUParser(fd.get());
msg("Generating code for file %s...\n",fd->docName().data());
clangParser->parse();
fd->writeSourceHeader(*g_outputList);
@@ -7577,6 +7581,7 @@ static void generateFileSources()
else if (!fd->isReference() && Doxygen::parseSourcesNeeded)
// we needed to parse the sources even if we do not show them
{
+ auto clangParser = ClangParser::instance()->createTUParser(fd.get());
msg("Parsing code for file %s...\n",fd->docName().data());
clangParser->parse();
fd->writeSourceHeader(*g_outputList);