summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2017-12-21 17:51:35 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2017-12-21 17:51:35 +0000
commitd9ff4debf15c9a939c8e47397e4b7931cde1db57 (patch)
treecc366aa90b7ca234c389796eac80e45a8de91aaa
parent8da30ea0fc10809762b13d1b3196de9f516f91fe (diff)
[clangd] Fix use after free.
Found by asan. git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@321286 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--clangd/index/SymbolCollector.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/clangd/index/SymbolCollector.cpp b/clangd/index/SymbolCollector.cpp
index 6b575ab6..ee1c69dd 100644
--- a/clangd/index/SymbolCollector.cpp
+++ b/clangd/index/SymbolCollector.cpp
@@ -95,9 +95,10 @@ bool SymbolCollector::handleDeclOccurence(
return true;
auto &SM = ND->getASTContext().getSourceManager();
- SymbolLocation Location = {
- makeAbsolutePath(SM, SM.getFilename(D->getLocation())),
- SM.getFileOffset(D->getLocStart()), SM.getFileOffset(D->getLocEnd())};
+ std::string FilePath =
+ makeAbsolutePath(SM, SM.getFilename(D->getLocation()));
+ SymbolLocation Location = {FilePath, SM.getFileOffset(D->getLocStart()),
+ SM.getFileOffset(D->getLocEnd())};
std::string QName = ND->getQualifiedNameAsString();
auto ScopeAndName = splitQualifiedName(QName);
Symbols.insert({std::move(ID), ScopeAndName.second, ScopeAndName.first,