diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2017-12-21 17:51:35 +0000 |
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2017-12-21 17:51:35 +0000 |
| commit | d9ff4debf15c9a939c8e47397e4b7931cde1db57 (patch) | |
| tree | cc366aa90b7ca234c389796eac80e45a8de91aaa | |
| parent | 8da30ea0fc10809762b13d1b3196de9f516f91fe (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.cpp | 7 |
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, |
