From 192bd48b8a17e4f62400b64e037df22c3b47de88 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 5 Feb 2007 15:18:14 +0000 Subject: [PATCH] Don't leak memory in _StringBase and _LongBase repr() --- _dbus_bindings/abstract.c | 12 ++++++++++-- 1 file 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, -- 2.11.4.GIT