From: Ted Kremenek Date: Tue, 14 Feb 2012 06:54:46 +0000 (+0000) Subject: Fix use-after-free introduced by me being an idiot. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7b8290f7e53e1b9f5521dd284e78ad488a12f0d0;p=clang Fix use-after-free introduced by me being an idiot. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150461 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/libclang/CIndexDiagnostic.cpp b/tools/libclang/CIndexDiagnostic.cpp index a36ca8c5d3..6a2a2b1904 100644 --- a/tools/libclang/CIndexDiagnostic.cpp +++ b/tools/libclang/CIndexDiagnostic.cpp @@ -44,16 +44,14 @@ CXDiagnosticImpl::~CXDiagnosticImpl() {} namespace { class CXDiagnosticCustomNoteImpl : public CXDiagnosticImpl { - CXString Message; + std::string Message; CXSourceLocation Loc; public: CXDiagnosticCustomNoteImpl(StringRef Msg, CXSourceLocation L) : CXDiagnosticImpl(CustomNoteDiagnosticKind), - Message(createCXString(Msg)), Loc(L) {} + Message(Msg), Loc(L) {} - virtual ~CXDiagnosticCustomNoteImpl() { - clang_disposeString(Message); - } + virtual ~CXDiagnosticCustomNoteImpl() {} CXDiagnosticSeverity getSeverity() const { return CXDiagnostic_Note; @@ -64,7 +62,7 @@ public: } CXString getSpelling() const { - return Message; + return createCXString(StringRef(Message), false); } CXString getDiagnosticOption(CXString *Disable) const {