From b05119cb00487672fcde5511a193d416b17a3e2d Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Tue, 14 Feb 2012 06:54:46 +0000 Subject: [PATCH] Fix use-after-free introduced by me being an idiot. llvm-svn: 150461 --- clang/tools/libclang/CIndexDiagnostic.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/clang/tools/libclang/CIndexDiagnostic.cpp b/clang/tools/libclang/CIndexDiagnostic.cpp index a36ca8c5d3c8..6a2a2b190412 100644 --- a/clang/tools/libclang/CIndexDiagnostic.cpp +++ b/clang/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 {