summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFredrik Lundh <fredrik@pythonware.com>2006-08-16 16:47:07 (GMT)
committerFredrik Lundh <fredrik@pythonware.com>2006-08-16 16:47:07 (GMT)
commitdc075b9ddd19ec5930d39f4958f8f80a2d14c8ae (patch)
tree3a8d766cd2aaf675701cb2b236119bbaaea58700
parent574cfea99395e85e5458ccc4f2d65f20ee6f1b52 (diff)
downloadcpython-dc075b9ddd19ec5930d39f4958f8f80a2d14c8ae.zip
cpython-dc075b9ddd19ec5930d39f4958f8f80a2d14c8ae.tar.gz
cpython-dc075b9ddd19ec5930d39f4958f8f80a2d14c8ae.tar.bz2
SF#1534630
ignore data that arrives before the opening start tag
-rw-r--r--Lib/test/test_xml_etree_c.py11
-rw-r--r--Modules/_elementtree.c6
2 files changed, 16 insertions, 1 deletions
diff --git a/Lib/test/test_xml_etree_c.py b/Lib/test/test_xml_etree_c.py
index 56e7fed..250f791 100644
--- a/Lib/test/test_xml_etree_c.py
+++ b/Lib/test/test_xml_etree_c.py
@@ -204,6 +204,17 @@ def check_encoding(encoding):
"<?xml version='1.0' encoding='%s'?><xml />" % encoding
)
+def bug_1534630():
+ """
+ >>> bob = ET.TreeBuilder()
+ >>> e = bob.data("data")
+ >>> e = bob.start("tag", {})
+ >>> e = bob.end("tag")
+ >>> e = bob.close()
+ >>> serialize(ET, e)
+ '<tag />'
+ """
+
def test_main():
from test import test_xml_etree_c
test_support.run_doctest(test_xml_etree_c, verbosity=True)
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
index c9e524f..f21cf56 100644
--- a/Modules/_elementtree.c
+++ b/Modules/_elementtree.c
@@ -48,7 +48,7 @@
#include "Python.h"
-#define VERSION "1.0.6-snapshot"
+#define VERSION "1.0.6"
/* -------------------------------------------------------------------- */
/* configuration */
@@ -1599,6 +1599,10 @@ LOCAL(PyObject*)
treebuilder_handle_data(TreeBuilderObject* self, PyObject* data)
{
if (!self->data) {
+ if (self->last == (ElementObject*) Py_None) {
+ /* ignore calls to data before the first call to start */
+ Py_RETURN_NONE;
+ }
/* store the first item as is */
Py_INCREF(data); self->data = data;
} else {