diff options
author | Ilya Biryukov <ibiryukov@google.com> | 2018-11-26 15:52:16 +0000 |
---|---|---|
committer | Ilya Biryukov <ibiryukov@google.com> | 2018-11-26 15:52:16 +0000 |
commit | 4d3d82eef96e10a54e3d0bf367d8e10917ca8662 (patch) | |
tree | 0c280523176deb7f50d79963c74dab133efb4bcc | |
parent | 647da3e8a5ada3d51b9ca09052c1876f08f4eb0a (diff) | |
download | bcm5719-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.cpp | 6 |
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; |