From d9ff4debf15c9a939c8e47397e4b7931cde1db57 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Thu, 21 Dec 2017 17:51:35 +0000 Subject: [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 --- clangd/index/SymbolCollector.cpp | 7 ++++--- 1 file 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, -- cgit v1.2.3