summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <tomas@poseidon.ndb.mysql.com>2006-05-08 18:09:01 +0200
committerunknown <tomas@poseidon.ndb.mysql.com>2006-05-08 18:09:01 +0200
commit94c6f6dc4888166b3677f38b534502156ef50d49 (patch)
treea417c16badf812bf41b9f6b6538ae18d04dc82f6
parent2f0b9ce9aa5673c4692d1b4cd8fbe3f3bcd56798 (diff)
downloadmariadb-git-94c6f6dc4888166b3677f38b534502156ef50d49.tar.gz
Bug #19572 Memory leaks in cluster when running make test
-rw-r--r--sql/ha_ndbcluster.cc5
-rw-r--r--sql/ha_ndbcluster_binlog.cc8
2 files changed, 10 insertions, 3 deletions
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index b84350fd3b8..89b9ed93d69 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -4431,8 +4431,11 @@ int ha_ndbcluster::create(const char *name,
if (readfrm(name, &data, &length))
DBUG_RETURN(1);
if (packfrm(data, length, &pack_data, &pack_length))
+ {
+ my_free((char*)data, MYF(0));
DBUG_RETURN(2);
-
+ }
+
DBUG_PRINT("info", ("setFrm data=%lx len=%d", pack_data, pack_length));
tab.setFrm(pack_data, pack_length);
my_free((char*)data, MYF(0));
diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc
index 922380f47f9..a125fd5e722 100644
--- a/sql/ha_ndbcluster_binlog.cc
+++ b/sql/ha_ndbcluster_binlog.cc
@@ -255,7 +255,7 @@ ndbcluster_binlog_close_table(THD *thd, NDB_SHARE *share)
DBUG_ENTER("ndbcluster_binlog_close_table");
if (share->table_share)
{
- free_table_share(share->table_share);
+ closefrm(share->table, 1);
share->table_share= 0;
share->table= 0;
}
@@ -1458,7 +1458,7 @@ ndb_handle_schema_change(THD *thd, Ndb *ndb, NdbEventOperation *pOp,
{
DBUG_ENTER("ndb_handle_schema_change");
TABLE* table= share->table;
- TABLE_SHARE *table_share= table->s;
+ TABLE_SHARE *table_share= share->table_share;
const char *dbname= table_share->db.str;
const char *tabname= table_share->table_name.str;
bool do_close_cached_tables= FALSE;
@@ -1527,6 +1527,8 @@ ndb_handle_schema_change(THD *thd, Ndb *ndb, NdbEventOperation *pOp,
old->getObjectVersion() != altered_table->getObjectVersion())
dict->putTable(altered_table);
+ my_free((char*)data, MYF(MY_ALLOW_ZERO_PTR));
+ data= NULL;
if ((error= unpackfrm(&data, &length, altered_table->getFrmData())) ||
(error= writefrm(key, data, length)))
{
@@ -1547,6 +1549,8 @@ ndb_handle_schema_change(THD *thd, Ndb *ndb, NdbEventOperation *pOp,
dbname, tabname);
pthread_mutex_unlock(&LOCK_open);
}
+ my_free((char*)data, MYF(MY_ALLOW_ZERO_PTR));
+ my_free((char*)pack_data, MYF(MY_ALLOW_ZERO_PTR));
}
// If only frm was changed continue replicating