]> granicus.if.org Git - clang/commitdiff
Fix use-after-free introduced by me being an idiot.
authorTed Kremenek <kremenek@apple.com>
Tue, 14 Feb 2012 06:54:46 +0000 (06:54 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 14 Feb 2012 06:54:46 +0000 (06:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150461 91177308-0d34-0410-b5e6-96231b3b80d8

tools/libclang/CIndexDiagnostic.cpp

index a36ca8c5d3c8c324071f9d979596b2f425eca447..6a2a2b1904128f41157e9614d35a4f367ca2d95a 100644 (file)
@@ -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 {