Commit 353f77b3 authored by Fredrik Lundh's avatar Fredrik Lundh

SF#1534630

ignore data that arrives before the opening start tag
parent 6a212a39
...@@ -204,6 +204,17 @@ def check_encoding(encoding): ...@@ -204,6 +204,17 @@ def check_encoding(encoding):
"<?xml version='1.0' encoding='%s'?><xml />" % 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(): def test_main():
from test import test_xml_etree_c from test import test_xml_etree_c
test_support.run_doctest(test_xml_etree_c, verbosity=True) test_support.run_doctest(test_xml_etree_c, verbosity=True)
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
#include "Python.h" #include "Python.h"
#define VERSION "1.0.6-snapshot" #define VERSION "1.0.6"
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
/* configuration */ /* configuration */
...@@ -1599,6 +1599,10 @@ LOCAL(PyObject*) ...@@ -1599,6 +1599,10 @@ LOCAL(PyObject*)
treebuilder_handle_data(TreeBuilderObject* self, PyObject* data) treebuilder_handle_data(TreeBuilderObject* self, PyObject* data)
{ {
if (!self->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 */ /* store the first item as is */
Py_INCREF(data); self->data = data; Py_INCREF(data); self->data = data;
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment