diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index 86f8a6fb3c4..bc8b620eff2 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -131,7 +131,7 @@ def check_element(element): # element tree tests def interface(): - """ + r""" Test element tree interface. >>> element = ET.Element("tag") @@ -139,10 +139,11 @@ def interface(): >>> tree = ET.ElementTree(element) >>> check_element(tree.getroot()) - >>> element = ET.Element("tag", key="value") + >>> element = ET.Element("t\xe4g", key="value") >>> tree = ET.ElementTree(element) >>> repr(element) # doctest: +ELLIPSIS - "" + "" + >>> element = ET.Element("tag", key="value") Make sure all standard element methods exist. diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index 62aee8504da..0aa1ebb76ea 100644 --- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -1190,15 +1190,16 @@ element_remove(ElementObject* self, PyObject* args) static PyObject* element_repr(ElementObject* self) { - PyObject* repr; - char buffer[100]; - - repr = PyString_FromString("tag)); + tag = PyObject_Repr(self->tag); + if (!tag) + return NULL; - sprintf(buffer, " at %p>", self); - PyString_ConcatAndDel(&repr, PyString_FromString(buffer)); + repr = PyString_FromFormat("", + PyString_AS_STRING(tag), self); + + Py_DECREF(tag); return repr; }