diff options
Diffstat (limited to 'Objects/weakrefobject.c')
-rw-r--r-- | Objects/weakrefobject.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c index 13323cf..dfaa1b9 100644 --- a/Objects/weakrefobject.c +++ b/Objects/weakrefobject.c @@ -168,13 +168,20 @@ weakref_repr(PyWeakReference *self) PyErr_Clear(); else if (PyUnicode_Check(nameobj)) name = _PyUnicode_AsString(nameobj); - PyOS_snprintf(buffer, sizeof(buffer), - name ? "<weakref at %p; to '%.50s' at %p (%s)>" - : "<weakref at %p; to '%.50s' at %p>", - self, - Py_TYPE(PyWeakref_GET_OBJECT(self))->tp_name, - PyWeakref_GET_OBJECT(self), - name); + if (name) + PyOS_snprintf(buffer, sizeof(buffer), + "<weakref at %p; to '%.50s' at %p (%s)>", + self, + Py_TYPE(PyWeakref_GET_OBJECT(self))->tp_name, + PyWeakref_GET_OBJECT(self), + name); + else + PyOS_snprintf(buffer, sizeof(buffer), + "<weakref at %p; to '%.50s' at %p>", + self, + Py_TYPE(PyWeakref_GET_OBJECT(self))->tp_name, + PyWeakref_GET_OBJECT(self)); + Py_XDECREF(nameobj); } return PyUnicode_FromString(buffer); |