Add SQLite::Exception constructor that takes const char* in order to avoid possible std::bad_alloc exception

std::runtime_error provides such overload in c++11, therefore it will make no difference when compiling for c++03, but should provide no harm either
This commit is contained in:
fekir 2017-08-19 08:59:57 +02:00
parent 94ebe5ced6
commit 67ac88fb1e
2 changed files with 15 additions and 0 deletions

View File

@ -50,6 +50,7 @@ public:
* *
* @param[in] aErrorMessage The string message describing the SQLite error * @param[in] aErrorMessage The string message describing the SQLite error
*/ */
explicit Exception(const char* aErrorMessage);
explicit Exception(const std::string& aErrorMessage); explicit Exception(const std::string& aErrorMessage);
/** /**
@ -58,6 +59,7 @@ public:
* @param[in] aErrorMessage The string message describing the SQLite error * @param[in] aErrorMessage The string message describing the SQLite error
* @param[in] ret Return value from function call that failed. * @param[in] ret Return value from function call that failed.
*/ */
Exception(const char* aErrorMessage, int ret);
Exception(const std::string& aErrorMessage, int ret); Exception(const std::string& aErrorMessage, int ret);
/** /**

View File

@ -16,6 +16,12 @@
namespace SQLite namespace SQLite
{ {
Exception::Exception(const char* aErrorMessage) :
std::runtime_error(aErrorMessage),
mErrcode(-1), // 0 would be SQLITE_OK, which doesn't make sense
mExtendedErrcode(-1)
{
}
Exception::Exception(const std::string& aErrorMessage) : Exception::Exception(const std::string& aErrorMessage) :
std::runtime_error(aErrorMessage), std::runtime_error(aErrorMessage),
mErrcode(-1), // 0 would be SQLITE_OK, which doesn't make sense mErrcode(-1), // 0 would be SQLITE_OK, which doesn't make sense
@ -23,6 +29,13 @@ Exception::Exception(const std::string& aErrorMessage) :
{ {
} }
Exception::Exception(const char* aErrorMessage, int ret) :
std::runtime_error(aErrorMessage),
mErrcode(ret),
mExtendedErrcode(-1)
{
}
Exception::Exception(const std::string& aErrorMessage, int ret) : Exception::Exception(const std::string& aErrorMessage, int ret) :
std::runtime_error(aErrorMessage), std::runtime_error(aErrorMessage),
mErrcode(ret), mErrcode(ret),