summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/cextension/processors.c
diff options
context:
space:
mode:
authorGaëtan de Menten <gdementen@gmail.com>2010-11-27 22:27:42 +0100
committerGaëtan de Menten <gdementen@gmail.com>2010-11-27 22:27:42 +0100
commit20418096d5862ed40f22b6c7b7cc53dd212bbd21 (patch)
tree564cb709dc0d96d6b47754d898cfd362ff6bd850 /lib/sqlalchemy/cextension/processors.c
parent77f641429f019d06cc467ec4e57ae94f808d70bd (diff)
downloadsqlalchemy-20418096d5862ed40f22b6c7b7cc53dd212bbd21.tar.gz
fixed a small potential memory leak in UnicodeResultProcessor (for some weird
reason, it didn't actually leak in my tests) by providing a dealloc method to the type, and added a test to ensure it stays that way. Closes #1981.
Diffstat (limited to 'lib/sqlalchemy/cextension/processors.c')
-rw-r--r--lib/sqlalchemy/cextension/processors.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/sqlalchemy/cextension/processors.c b/lib/sqlalchemy/cextension/processors.c
index 193fb19f3..36745c817 100644
--- a/lib/sqlalchemy/cextension/processors.c
+++ b/lib/sqlalchemy/cextension/processors.c
@@ -204,6 +204,14 @@ UnicodeResultProcessor_process(UnicodeResultProcessor *self, PyObject *value)
return PyUnicode_Decode(str, len, encoding, errors);
}
+static void
+UnicodeResultProcessor_dealloc(UnicodeResultProcessor *self)
+{
+ Py_XDECREF(self->encoding);
+ Py_XDECREF(self->errors);
+ self->ob_type->tp_free((PyObject*)self);
+}
+
static PyMethodDef UnicodeResultProcessor_methods[] = {
{"process", (PyCFunction)UnicodeResultProcessor_process, METH_O,
"The value processor itself."},
@@ -216,7 +224,7 @@ static PyTypeObject UnicodeResultProcessorType = {
"sqlalchemy.cprocessors.UnicodeResultProcessor", /* tp_name */
sizeof(UnicodeResultProcessor), /* tp_basicsize */
0, /* tp_itemsize */
- 0, /* tp_dealloc */
+ (destructor)UnicodeResultProcessor_dealloc, /* tp_dealloc */
0, /* tp_print */
0, /* tp_getattr */
0, /* tp_setattr */