Skip to content

Commit 2fd33a3

Browse files
committed
Fix weakref_repr
1 parent 52cda14 commit 2fd33a3

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

Objects/weakrefobject.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,24 +166,28 @@ weakref_repr(PyWeakReference *self)
166166
if (PyWeakref_GET_OBJECT(self) == Py_None)
167167
return PyUnicode_FromFormat("<weakref at %p; dead>", self);
168168

169-
if (_PyObject_LookupAttrId(PyWeakref_GET_OBJECT(self), &PyId___name__, &name) < 0) {
169+
PyObect* obj = PyWeakref_GET_OBJECT(self);
170+
Py_INCREF(obj);
171+
if (_PyObject_LookupAttrId(obj, &PyId___name__, &name) < 0) {
172+
Py_DECREF(obj);
170173
return NULL;
171174
}
172175
if (name == NULL || !PyUnicode_Check(name)) {
173176
repr = PyUnicode_FromFormat(
174177
"<weakref at %p; to '%s' at %p>",
175178
self,
176179
Py_TYPE(PyWeakref_GET_OBJECT(self))->tp_name,
177-
PyWeakref_GET_OBJECT(self));
180+
obj);
178181
}
179182
else {
180183
repr = PyUnicode_FromFormat(
181184
"<weakref at %p; to '%s' at %p (%U)>",
182185
self,
183186
Py_TYPE(PyWeakref_GET_OBJECT(self))->tp_name,
184-
PyWeakref_GET_OBJECT(self),
187+
obj,
185188
name);
186189
}
190+
Py_DECREF(obj);
187191
Py_XDECREF(name);
188192
return repr;
189193
}

0 commit comments

Comments
 (0)