summaryrefslogtreecommitdiff
path: root/_dbus_bindings
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2007-02-05 15:18:14 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2007-02-05 15:18:14 +0000
commit192bd48b8a17e4f62400b64e037df22c3b47de88 (patch)
tree32de39bc9a3d314c6a630f3ab762b95b43655465 /_dbus_bindings
parent630f912b2155e6328a3fa48deb832f5c3d114b94 (diff)
downloaddbus-python-192bd48b8a17e4f62400b64e037df22c3b47de88.tar.gz
Don't leak memory in _StringBase and _LongBase repr()
Diffstat (limited to '_dbus_bindings')
-rw-r--r--_dbus_bindings/abstract.c12
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,