Commit 5e7c6e0e authored by unknown's avatar unknown

ndb - fix small memory leak


ndb/include/util/Vector.hpp:
  fix small memory leak
ndb/src/mgmapi/mgmapi.cpp:
  fix small memory leak
parent b790a348
...@@ -61,6 +61,10 @@ Vector<T>::Vector(int i){ ...@@ -61,6 +61,10 @@ Vector<T>::Vector(int i){
template<class T> template<class T>
Vector<T>::~Vector(){ Vector<T>::~Vector(){
delete[] m_items; delete[] m_items;
// safety for placement new usage
m_items = 0;
m_size = 0;
m_arraySize = 0;
} }
template<class T> template<class T>
...@@ -174,6 +178,10 @@ MutexVector<T>::MutexVector(int i){ ...@@ -174,6 +178,10 @@ MutexVector<T>::MutexVector(int i){
template<class T> template<class T>
MutexVector<T>::~MutexVector(){ MutexVector<T>::~MutexVector(){
delete[] m_items; delete[] m_items;
// safety for placement new usage
m_items = 0;
m_size = 0;
m_arraySize = 0;
} }
template<class T> template<class T>
......
...@@ -144,6 +144,7 @@ extern "C" ...@@ -144,6 +144,7 @@ extern "C"
NdbMgmHandle NdbMgmHandle
ndb_mgm_create_handle() ndb_mgm_create_handle()
{ {
DBUG_ENTER("ndb_mgm_create_handle");
NdbMgmHandle h = NdbMgmHandle h =
(NdbMgmHandle)my_malloc(sizeof(ndb_mgm_handle),MYF(MY_WME)); (NdbMgmHandle)my_malloc(sizeof(ndb_mgm_handle),MYF(MY_WME));
h->connected = 0; h->connected = 0;
...@@ -163,7 +164,8 @@ ndb_mgm_create_handle() ...@@ -163,7 +164,8 @@ ndb_mgm_create_handle()
h->logfile = 0; h->logfile = 0;
#endif #endif
return h; DBUG_PRINT("info", ("handle=0x%x", (UintPtr)h));
DBUG_RETURN(h);
} }
extern "C" extern "C"
...@@ -171,10 +173,13 @@ int ...@@ -171,10 +173,13 @@ int
ndb_mgm_set_connectstring(NdbMgmHandle handle, const char * mgmsrv) ndb_mgm_set_connectstring(NdbMgmHandle handle, const char * mgmsrv)
{ {
DBUG_ENTER("ndb_mgm_set_connectstring"); DBUG_ENTER("ndb_mgm_set_connectstring");
DBUG_PRINT("info", ("handle=0x%x", (UintPtr)handle));
handle->cfg.~LocalConfig();
new (&(handle->cfg)) LocalConfig; new (&(handle->cfg)) LocalConfig;
if (!handle->cfg.init(mgmsrv, 0) || if (!handle->cfg.init(mgmsrv, 0) ||
handle->cfg.ids.size() == 0) handle->cfg.ids.size() == 0)
{ {
handle->cfg.~LocalConfig();
new (&(handle->cfg)) LocalConfig; new (&(handle->cfg)) LocalConfig;
handle->cfg.init(0, 0); /* reset the LocalConfig */ handle->cfg.init(0, 0); /* reset the LocalConfig */
SET_ERROR(handle, NDB_MGM_ILLEGAL_CONNECT_STRING, ""); SET_ERROR(handle, NDB_MGM_ILLEGAL_CONNECT_STRING, "");
...@@ -191,8 +196,10 @@ extern "C" ...@@ -191,8 +196,10 @@ extern "C"
void void
ndb_mgm_destroy_handle(NdbMgmHandle * handle) ndb_mgm_destroy_handle(NdbMgmHandle * handle)
{ {
DBUG_ENTER("ndb_mgm_destroy_handle");
if(!handle) if(!handle)
return; DBUG_VOID_RETURN;
DBUG_PRINT("info", ("handle=0x%x", (UintPtr)(* handle)));
/** /**
* important! only disconnect if connected * important! only disconnect if connected
* other code relies on this * other code relies on this
...@@ -209,6 +216,7 @@ ndb_mgm_destroy_handle(NdbMgmHandle * handle) ...@@ -209,6 +216,7 @@ ndb_mgm_destroy_handle(NdbMgmHandle * handle)
(*handle)->cfg.~LocalConfig(); (*handle)->cfg.~LocalConfig();
my_free((char*)* handle,MYF(MY_ALLOW_ZERO_PTR)); my_free((char*)* handle,MYF(MY_ALLOW_ZERO_PTR));
* handle = 0; * handle = 0;
DBUG_VOID_RETURN;
} }
/***************************************************************************** /*****************************************************************************
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment