diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/shared/Database/PreparedStatement.cpp | 2 | ||||
-rw-r--r-- | src/server/shared/Database/QueryResult.cpp | 5 | ||||
-rwxr-xr-x | src/server/shared/Database/QueryResult.h | 6 |
3 files changed, 7 insertions, 6 deletions
diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp index 0bc23648ac2..5f991f3a08a 100644 --- a/src/server/shared/Database/PreparedStatement.cpp +++ b/src/server/shared/Database/PreparedStatement.cpp @@ -289,6 +289,7 @@ void MySQLPreparedStatement::setString(const uint8 index, const char* value) MYSQL_BIND* param = &m_bind[index]; size_t len = strlen(value) + 1; param->buffer_type = MYSQL_TYPE_VAR_STRING; + delete [] static_cast<char *>(param->buffer); param->buffer = new char[len]; param->buffer_length = len; param->is_null_value = 0; @@ -300,6 +301,7 @@ void MySQLPreparedStatement::setString(const uint8 index, const char* value) void MySQLPreparedStatement::setValue(MYSQL_BIND* param, enum_field_types type, const void* value, uint32 len, bool isUnsigned) { param->buffer_type = type; + delete [] static_cast<char *>(param->buffer); param->buffer = new char[len]; param->buffer_length = 0; param->is_null_value = 0; diff --git a/src/server/shared/Database/QueryResult.cpp b/src/server/shared/Database/QueryResult.cpp index f2350df9e6d..61f41e75587 100644 --- a/src/server/shared/Database/QueryResult.cpp +++ b/src/server/shared/Database/QueryResult.cpp @@ -176,8 +176,13 @@ void ResultBind::FreeBindBuffer() void ResultBind::CleanUp() { + if (m_res) + mysql_free_result(m_res); + FreeBindBuffer(); mysql_stmt_free_result(m_stmt); + + delete[] m_rBind; } uint8 PreparedResultSet::GetUInt8(uint32 index) diff --git a/src/server/shared/Database/QueryResult.h b/src/server/shared/Database/QueryResult.h index 096c562b33c..5e7ff01f819 100755 --- a/src/server/shared/Database/QueryResult.h +++ b/src/server/shared/Database/QueryResult.h @@ -105,12 +105,6 @@ class ResultBind ~ResultBind() { - if (m_res) - mysql_free_result(m_res); // metadata - - if (!m_fieldCount) - return; - CleanUp(); // Clean up buffer } |