summaryrefslogtreecommitdiffstats
path: root/src/dal
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2010-11-14 22:53:51 +0100
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2010-11-14 22:53:51 +0100
commitc0c064cf9d0ad0270cfd92f54cbf59cdbbe40807 (patch)
treedcf8ba37924660ad162e878ca1887b37a110d05b /src/dal
parent9c28427af0330d969eae0a86caea2519b7977ebb (diff)
downloadmanaserv-c0c064cf9d0ad0270cfd92f54cbf59cdbbe40807.tar.gz
manaserv-c0c064cf9d0ad0270cfd92f54cbf59cdbbe40807.tar.xz
manaserv-c0c064cf9d0ad0270cfd92f54cbf59cdbbe40807.zip
Fix a potential memleak related to binds when disconnecting with MySQL.
Trivial fix.
Diffstat (limited to 'src/dal')
-rw-r--r--src/dal/mysqldataprovider.cpp18
-rw-r--r--src/dal/mysqldataprovider.h3
2 files changed, 16 insertions, 5 deletions
diff --git a/src/dal/mysqldataprovider.cpp b/src/dal/mysqldataprovider.cpp
index d297c95..c1f4573 100644
--- a/src/dal/mysqldataprovider.cpp
+++ b/src/dal/mysqldataprovider.cpp
@@ -216,6 +216,9 @@ void MySqlDataProvider::disconnect()
// deinitialize the MySQL client library.
mysql_library_end();
+ // Clean potential active binds
+ cleanBinds();
+
mDb = 0;
mIsConnected = false;
}
@@ -372,11 +375,7 @@ bool MySqlDataProvider::prepareSql(const std::string &sql)
LOG_DEBUG("MySqlDataProvider::prepareSql Preparing SQL statement: " << sql);
- if (mBind)
- {
- delete[] mBind;
- mBind = 0;
- }
+ cleanBinds();
if (mysql_stmt_prepare(mStmt, sql.c_str(), sql.size()) != 0)
return false;
@@ -520,4 +519,13 @@ void MySqlDataProvider::bindValue(int place, MYSQL_BIND* bind)
"Attempted bind index out of range");
}
+void MySqlDataProvider::cleanBinds()
+{
+ if (mBind)
+ {
+ delete[] mBind;
+ mBind = 0;
+ }
+}
+
} // namespace dal
diff --git a/src/dal/mysqldataprovider.h b/src/dal/mysqldataprovider.h
index 4850a14..a35d35e 100644
--- a/src/dal/mysqldataprovider.h
+++ b/src/dal/mysqldataprovider.h
@@ -181,6 +181,9 @@ class MySqlDataProvider: public DataProvider
*/
void bindValue(int place, MYSQL_BIND* bind);
+ /** Clean potential binds */
+ void cleanBinds();
+
/** defines the name of the hostname config parameter */
static const std::string CFGPARAM_MYSQL_HOST;
/** defines the name of the server port config parameter */