[clangd] Fix use-after-free with expected types in indexing

llvm-svn: 347563
This commit is contained in:
Ilya Biryukov 2018-11-26 15:52:16 +00:00
parent 647da3e8a5
commit 4d3d82eef9

View File

@ -587,9 +587,11 @@ const Symbol *SymbolCollector::addDeclaration(const NamedDecl &ND,
if (!Include.empty())
S.IncludeHeaders.emplace_back(Include, 1);
llvm::Optional<OpaqueType> TypeStorage;
if (S.Flags & Symbol::IndexedForCodeCompletion) {
if (auto T = OpaqueType::fromCompletionResult(*ASTCtx, SymbolCompletion))
S.Type = T->raw();
TypeStorage = OpaqueType::fromCompletionResult(*ASTCtx, SymbolCompletion);
if (TypeStorage)
S.Type = TypeStorage->raw();
}
S.Origin = Opts.Origin;