Make sure that the string given by what() can be used.
authorBrad Hards <bradh@openchange.org>
Sat, 26 Sep 2009 06:57:34 +0000 (06:57 +0000)
committerBrad Hards <bradh@openchange.org>
Sat, 26 Sep 2009 06:57:34 +0000 (06:57 +0000)
Patch by Erik Hovland - thanks very much.

Resolves ticket #179.

libmapi++/mapi_exception.h

index b9e98f6705dbe2104b9da3472127e4b34bf63ce3..a504572814ed1cfd700ab9aee5174e3329bc0f60 100644 (file)
@@ -26,6 +26,8 @@
 #include <iostream>
 #include <string>
 
+#include <cstring>
+
 #include <libmapi++/clibmapi.h>
 
 #define STATUS_TABLE_INSERT(status) sm_status_map.insert(status_map::value_type(status, #status));
@@ -48,7 +50,7 @@ class mapi_exception : public std::exception
                        ret_string += ": ";
                        ret_string += (iter != sm_status_map.end()) ? iter->second : "Unknown MAPISTATUS value";
 
-                       return ret_string.c_str();
+                       return const_cast<const char*>(::strdup(ret_string.c_str()));
                }
                enum MAPISTATUS get_status() const { return m_status; }