summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_xml_etree.py7
-rw-r--r--Modules/_elementtree.c15
2 files changed, 12 insertions, 10 deletions
diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py
index 86f8a6f..bc8b620 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 'tag' at 0x...>"
+ "<Element 't\\xe4g' at 0x...>"
+ >>> element = ET.Element("tag", key="value")
Make sure all standard element methods exist.
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
index 62aee85..0aa1ebb 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("<Element ");
+ PyObject *repr, *tag;
- PyString_ConcatAndDel(&repr, PyObject_Repr(self->tag));
+ tag = PyObject_Repr(self->tag);
+ if (!tag)
+ return NULL;
- sprintf(buffer, " at %p>", self);
- PyString_ConcatAndDel(&repr, PyString_FromString(buffer));
+ repr = PyString_FromFormat("<Element %s at %p>",
+ PyString_AS_STRING(tag), self);
+
+ Py_DECREF(tag);
return repr;
}