summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2018-11-26 15:52:16 +0000
committerIlya Biryukov <ibiryukov@google.com>2018-11-26 15:52:16 +0000
commit4d3d82eef96e10a54e3d0bf367d8e10917ca8662 (patch)
tree0c280523176deb7f50d79963c74dab133efb4bcc
parent647da3e8a5ada3d51b9ca09052c1876f08f4eb0a (diff)
downloadbcm5719-llvm-4d3d82eef96e10a54e3d0bf367d8e10917ca8662.tar.gz
bcm5719-llvm-4d3d82eef96e10a54e3d0bf367d8e10917ca8662.zip
[clangd] Fix use-after-free with expected types in indexing
llvm-svn: 347563
-rw-r--r--clang-tools-extra/clangd/index/SymbolCollector.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang-tools-extra/clangd/index/SymbolCollector.cpp b/clang-tools-extra/clangd/index/SymbolCollector.cpp
index 84aff8b51b2..52a2069212d 100644
--- a/clang-tools-extra/clangd/index/SymbolCollector.cpp
+++ b/clang-tools-extra/clangd/index/SymbolCollector.cpp
@@ -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;
OpenPOWER on IntegriCloud