diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2020-09-30 19:30:35 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2020-09-30 19:30:35 (GMT) |
commit | 02b8dea10813606db4a013799a3e354368d0280f (patch) | |
tree | 9406bf39d85a5c7639b15a1f086eaaa4c111f4cf /src/doxygen.cpp | |
parent | dc33ea319801b75bc3523c24d95da972a6c1cbe2 (diff) | |
download | Doxygen-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.cpp | 9 |
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); |