summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rwxr-xr-xlib/common/makeexception.pl.in15
1 files changed, 5 insertions, 10 deletions
diff --git a/lib/common/makeexception.pl.in b/lib/common/makeexception.pl.in
index e4018180..498c81b8 100755
--- a/lib/common/makeexception.pl.in
+++ b/lib/common/makeexception.pl.in
@@ -117,6 +117,7 @@ print H <<__E;
private:
unsigned int mSubType;
std::string mMessage;
+ std::string mWhat;
};
#endif // $guardname
@@ -190,21 +191,15 @@ unsigned int ${class}Exception::GetSubType() const throw()
const char * ${class}Exception::what() const throw()
{
- std::string what = "${class}";
-
-#ifdef EXCEPTION_CODENAMES_EXTENDED
- if(mSubType < (sizeof(whats) / sizeof(whats[0])))
- {
- what = whats[mSubType];
- }
-#endif
+ // We need to use a string that will persist after this function exits.
+ mWhat = GetMessage(mSubType);
if(mMessage != "")
{
- what += ": " + mMessage;
+ mWhat += ": " + mMessage;
}
- return what.c_str();
+ return mWhat.c_str();
}
const char * ${class}Exception::GetMessage(int SubType)