mirror of
https://github.com/psycopg/psycopg2.git
synced 2024-11-22 00:46:33 +03:00
Implement traversal for Diagnostics object
Triyng to fix a reported memory leak with diags, but implementing traversing doesn't help. Quite the opposite in the example provided in bug #557, the leak is present even with the `del diag`. The leak appears with Python 3.5, not with Python 2.7.
This commit is contained in:
parent
165449c724
commit
9f6bab692d
|
@ -132,10 +132,23 @@ diagnostics_init(diagnosticsObject *self, PyObject *args, PyObject *kwds)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
diagnostics_traverse(diagnosticsObject *self, visitproc visit, void *arg)
|
||||
{
|
||||
Py_VISIT(self->err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
diagnostics_clear(diagnosticsObject *self)
|
||||
{
|
||||
Py_CLEAR(self->err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
diagnostics_dealloc(diagnosticsObject* self)
|
||||
{
|
||||
Py_CLEAR(self->err);
|
||||
Py_TYPE(self)->tp_free((PyObject *)self);
|
||||
}
|
||||
|
||||
|
@ -175,10 +188,10 @@ PyTypeObject diagnosticsType = {
|
|||
0, /*tp_getattro*/
|
||||
0, /*tp_setattro*/
|
||||
0, /*tp_as_buffer*/
|
||||
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/
|
||||
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
|
||||
diagnosticsType_doc, /*tp_doc*/
|
||||
0, /*tp_traverse*/
|
||||
0, /*tp_clear*/
|
||||
(traverseproc)diagnostics_traverse, /*tp_traverse*/
|
||||
(inquiry)diagnostics_clear, /*tp_clear*/
|
||||
0, /*tp_richcompare*/
|
||||
0, /*tp_weaklistoffset*/
|
||||
0, /*tp_iter*/
|
||||
|
|
Loading…
Reference in New Issue
Block a user