mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Issue #25455: Fixed a crash in repr of ElementTree.Element with recursive tag.
This commit is contained in:
commit
f0ee5ccd19
3 changed files with 25 additions and 4 deletions
|
@ -1610,10 +1610,23 @@ _elementtree_Element_remove_impl(ElementObject *self, PyObject *subelement)
|
|||
static PyObject*
|
||||
element_repr(ElementObject* self)
|
||||
{
|
||||
if (self->tag)
|
||||
return PyUnicode_FromFormat("<Element %R at %p>", self->tag, self);
|
||||
else
|
||||
int status;
|
||||
|
||||
if (self->tag == NULL)
|
||||
return PyUnicode_FromFormat("<Element at %p>", self);
|
||||
|
||||
status = Py_ReprEnter((PyObject *)self);
|
||||
if (status == 0) {
|
||||
PyObject *res;
|
||||
res = PyUnicode_FromFormat("<Element %R at %p>", self->tag, self);
|
||||
Py_ReprLeave((PyObject *)self);
|
||||
return res;
|
||||
}
|
||||
if (status > 0)
|
||||
PyErr_Format(PyExc_RuntimeError,
|
||||
"reentrant call inside %s.__repr__",
|
||||
Py_TYPE(self)->tp_name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*[clinic input]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue