Eliminate memory leak for subscriptions.

This commit is contained in:
Anthony Tuininga 2019-03-08 09:57:14 -07:00
parent 948abd9b7c
commit 8789c6d2a0

View File

@ -542,6 +542,8 @@ static void cxoSubscr_free(cxoSubscr *subscr)
} }
Py_CLEAR(subscr->connection); Py_CLEAR(subscr->connection);
Py_CLEAR(subscr->callback); Py_CLEAR(subscr->callback);
Py_CLEAR(subscr->name);
Py_CLEAR(subscr->ipAddress);
Py_TYPE(subscr)->tp_free((PyObject*) subscr); Py_TYPE(subscr)->tp_free((PyObject*) subscr);
} }
@ -663,6 +665,7 @@ static void cxoMessage_free(cxoMessage *message)
{ {
Py_CLEAR(message->subscription); Py_CLEAR(message->subscription);
Py_CLEAR(message->dbname); Py_CLEAR(message->dbname);
Py_CLEAR(message->txId);
Py_CLEAR(message->tables); Py_CLEAR(message->tables);
Py_CLEAR(message->queries); Py_CLEAR(message->queries);
Py_CLEAR(message->queueName); Py_CLEAR(message->queueName);
@ -672,14 +675,13 @@ static void cxoMessage_free(cxoMessage *message)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// cxoMessageTable_free() // cxoMessageQuery_free()
// Free the memory associated with a table in a message. // Free the memory associated with a query in a message.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
static void cxoMessageTable_free(cxoMessageTable *table) static void cxoMessageQuery_free(cxoMessageQuery *query)
{ {
Py_CLEAR(table->name); Py_CLEAR(query->tables);
Py_CLEAR(table->rows); Py_TYPE(query)->tp_free((PyObject*) query);
Py_TYPE(table)->tp_free((PyObject*) table);
} }
@ -695,12 +697,13 @@ static void cxoMessageRow_free(cxoMessageRow *row)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// cxoMessageQuery_free() // cxoMessageTable_free()
// Free the memory associated with a query in a message. // Free the memory associated with a table in a message.
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
static void cxoMessageQuery_free(cxoMessageQuery *query) static void cxoMessageTable_free(cxoMessageTable *table)
{ {
Py_CLEAR(query->tables); Py_CLEAR(table->name);
Py_TYPE(query)->tp_free((PyObject*) query); Py_CLEAR(table->rows);
Py_TYPE(table)->tp_free((PyObject*) table);
} }