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 a36ca8c..6a2a2b1 100644
--- a/tools/libclang/CIndexDiagnostic.cpp
+++ b/tools/libclang/CIndexDiagnostic.cpp
@@ -44,16 +44,14 @@
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 @@
}
CXString getSpelling() const {
- return Message;
+ return createCXString(StringRef(Message), false);
}
CXString getDiagnosticOption(CXString *Disable) const {