diff options
author | Attila Molnar <attilamolnar@hush.com> | 2016-08-17 14:09:05 +0200 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2016-08-17 14:09:05 +0200 |
commit | de174149f734b50cede6f04e45eb493aa121d0ad (patch) | |
tree | 3d5400d1116c28d22cf04ac617ed6d671e14fd9f /modules/extra/m_sqlite.cpp | |
parent | 2a5e7827bde932cc632e2457964631982dd96fca (diff) |
m_sqlite: Fix possible memory leak when opening a database fails
Diffstat (limited to 'modules/extra/m_sqlite.cpp')
-rw-r--r-- | modules/extra/m_sqlite.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/modules/extra/m_sqlite.cpp b/modules/extra/m_sqlite.cpp index d8b76011a..0699ee3eb 100644 --- a/modules/extra/m_sqlite.cpp +++ b/modules/extra/m_sqlite.cpp @@ -138,7 +138,16 @@ SQLiteService::SQLiteService(Module *o, const Anope::string &n, const Anope::str { int db = sqlite3_open_v2(database.c_str(), &this->sql, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0); if (db != SQLITE_OK) - throw SQL::Exception("Unable to open SQLite database " + database + ": " + sqlite3_errmsg(this->sql)); + { + Anope::string exstr = "Unable to open SQLite database " + database; + if (this->sql) + { + exstr += ": "; + exstr += sqlite3_errmsg(this->sql); + sqlite3_close(this->sql); + } + throw SQL::Exception(exstr); + } } SQLiteService::~SQLiteService() |