diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index 913f31a3fd9..679e41004bf 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -427,9 +427,15 @@ static bool isProjectDataUpToDate( return false; if (sessionModeEnabled() && project) return false; - const ProjectInfoList newProjectInfo = project - ? ProjectInfoList{CppModelManager::instance()->projectInfo(project)} - : CppModelManager::instance()->projectInfos(); + ProjectInfoList newProjectInfo; + if (project) { + if (const ProjectInfo::ConstPtr pi = CppModelManager::instance()->projectInfo(project)) + newProjectInfo.append(pi); + else + return false; + } else { + newProjectInfo = CppModelManager::instance()->projectInfos(); + } if (newProjectInfo.size() != projectInfo.size()) return false; for (int i = 0; i < projectInfo.size(); ++i) { @@ -450,8 +456,10 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr if (sessionModeEnabled()) { project = nullptr; projectInfo = CppModelManager::instance()->projectInfos(); + } else if (const ProjectInfo::ConstPtr pi = CppModelManager::instance()->projectInfo(project)) { + projectInfo.append(pi); } else { - projectInfo.append(CppModelManager::instance()->projectInfo(project)); + return; } const Utils::FilePath jsonDbDir = getJsonDbDir(project); diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index fc7c174cbda..4efe2e69f4f 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -166,8 +166,9 @@ GenerateCompilationDbResult generateCompilationDB(QList p const UsePrecompiledHeaders usePch = getPchUsage(); const QJsonArray jsonProjectOptions = QJsonArray::fromStringList(projectOptions); for (const ProjectInfo::ConstPtr &projectInfo : std::as_const(projectInfoList)) { + QTC_ASSERT(projectInfo, continue); for (ProjectPart::ConstPtr projectPart : projectInfo->projectParts()) { - QTC_ASSERT(projectInfo, continue); + QTC_ASSERT(projectPart, continue); QStringList args; const CompilerOptionsBuilder optionsBuilder = clangOptionsBuilder( *projectPart, warningsConfig, clangIncludeDir, {});