]> granicus.if.org Git - icinga2/commitdiff
Bugfix for the Exception class.
authorGunnar Beutner <gunnar.beutner@netways.de>
Mon, 21 May 2012 10:57:44 +0000 (12:57 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Mon, 21 May 2012 11:03:04 +0000 (13:03 +0200)
base/exception.cpp
base/exception.h

index 8f8af1ed3ff36788d83d0a5d213f9db03b6013d3..bdc0e82ac217bcf64fc20517d52a71fbedab98ff 100644 (file)
@@ -26,6 +26,7 @@ using namespace icinga;
  */
 Exception::Exception(void)
 {
+       m_Message = NULL;
 }
 
 /**
@@ -35,9 +36,18 @@ Exception::Exception(void)
  */
 Exception::Exception(const char *message)
 {
+       m_Message = NULL;
        SetMessage(message);
 }
 
+/**
+ * Destructor for the Exception class. Must be virtual for RTTI to work.
+ */
+Exception::~Exception(void) throw()
+{
+       Memory::Free(m_Message);
+}
+
 /**
  * Retrieves the description for the exception.
  *
@@ -65,9 +75,7 @@ const char *Exception::what(void) const throw()
  */
 void Exception::SetMessage(const char *message)
 {
-       if (m_Message)
-               delete m_Message;
-
+       Memory::Free(m_Message);
        m_Message = Memory::StrDup(message);
 }
 
index a85b039ba4f3b5959724cde30f7beb4a6ea032ff..114a902265d98d35a39368067e6b5f32680bc1cf 100644 (file)
@@ -31,7 +31,7 @@ namespace icinga
 class I2_BASE_API Exception : exception
 {
 private:
-       const char *m_Message;
+       char *m_Message;
 
 protected:
        void SetMessage(const char *message);
@@ -39,14 +39,7 @@ protected:
 public:
        Exception(void);
        Exception(const char *message);
-
-       /**
-        * Destructor for the Exception class. Must be virtual for RTTI to work.
-        */
-       virtual ~Exception(void) throw()
-       {
-               delete m_Message;
-       }
+       virtual ~Exception(void) throw();
 
        const char *GetMessage(void) const;