diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-02-05 15:18:14 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-02-05 15:18:14 +0000 |
commit | 192bd48b8a17e4f62400b64e037df22c3b47de88 (patch) | |
tree | 32de39bc9a3d314c6a630f3ab762b95b43655465 /_dbus_bindings/abstract.c | |
parent | 630f912b2155e6328a3fa48deb832f5c3d114b94 (diff) | |
download | dbus-python-192bd48b8a17e4f62400b64e037df22c3b47de88.tar.gz |
Don't leak memory in _StringBase and _LongBase repr()
Diffstat (limited to '_dbus_bindings/abstract.c')
-rw-r--r-- | _dbus_bindings/abstract.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/_dbus_bindings/abstract.c b/_dbus_bindings/abstract.c index 8e9507e..57a4e04 100644 --- a/_dbus_bindings/abstract.c +++ b/_dbus_bindings/abstract.c @@ -297,8 +297,12 @@ DBusPythonString_tp_repr(PyObject *self) if (!parent_repr) return NULL; vl_obj = PyObject_GetAttr(self, dbus_py_variant_level_const); - if (!vl_obj) return NULL; + if (!vl_obj) { + Py_DECREF(parent_repr); + return NULL; + } variant_level = PyInt_AsLong(vl_obj); + Py_DECREF(vl_obj); if (variant_level > 0) { my_repr = PyString_FromFormat("%s(%s, variant_level=%ld)", self->ob_type->tp_name, @@ -405,8 +409,12 @@ DBusPythonLong_tp_repr(PyObject *self) if (!parent_repr) return NULL; vl_obj = PyObject_GetAttr(self, dbus_py_variant_level_const); - if (!vl_obj) return 0; + if (!vl_obj) { + Py_DECREF(parent_repr); + return NULL; + } variant_level = PyInt_AsLong(vl_obj); + Py_DECREF(vl_obj); if (variant_level) { my_repr = PyString_FromFormat("%s(%s, variant_level=%ld)", self->ob_type->tp_name, |