[Lxml-checkins] r53649 - in lxml/branch/lxml-2.0: . src/lxml src/lxml/tests
scoder at codespeak.net
scoder at codespeak.net
Thu Apr 10 09:04:39 CEST 2008
Author: scoder
Date: Thu Apr 10 09:04:38 2008
New Revision: 53649
Modified:
lxml/branch/lxml-2.0/CHANGES.txt
lxml/branch/lxml-2.0/src/lxml/iterparse.pxi
lxml/branch/lxml-2.0/src/lxml/tests/test_elementtree.py
Log:
trunk merge -r 53647:53648: iterparse crash fix
Modified: lxml/branch/lxml-2.0/CHANGES.txt
==============================================================================
--- lxml/branch/lxml-2.0/CHANGES.txt (original)
+++ lxml/branch/lxml-2.0/CHANGES.txt Thu Apr 10 09:04:38 2008
@@ -11,6 +11,8 @@
Bugs fixed
----------
+* Crash bug in iterparse when moving elements into other documents.
+
* HTML elements' ``.cssselect()`` method was broken.
* ``ElementTree.find*()`` didn't accept QName objects.
Modified: lxml/branch/lxml-2.0/src/lxml/iterparse.pxi
==============================================================================
--- lxml/branch/lxml-2.0/src/lxml/iterparse.pxi (original)
+++ lxml/branch/lxml-2.0/src/lxml/iterparse.pxi Thu Apr 10 09:04:38 2008
@@ -325,6 +325,7 @@
None, filename, encoding)
context = <_IterparseContext>self._getPushParserContext()
+ __GLOBAL_PARSER_CONTEXT.initParserDict(context._c_ctxt)
context._setEventFilter(events, tag)
context.prepare()
# parser will not be unlocked - no other methods supported
Modified: lxml/branch/lxml-2.0/src/lxml/tests/test_elementtree.py
==============================================================================
--- lxml/branch/lxml-2.0/src/lxml/tests/test_elementtree.py (original)
+++ lxml/branch/lxml-2.0/src/lxml/tests/test_elementtree.py Thu Apr 10 09:04:38 2008
@@ -2567,6 +2567,19 @@
[1,2,1,4],
counts)
+ def test_iterparse_move_elements(self):
+ iterparse = self.etree.iterparse
+ f = StringIO('<a><b><d/></b><c/></a>')
+
+ for event, node in etree.iterparse(f): pass
+
+ root = etree.Element('new_root', {})
+ root[:] = node[:]
+
+ self.assertEquals(
+ ['b', 'c'],
+ [ el.tag for el in root ])
+
def test_parse_file(self):
parse = self.etree.parse
# from file
More information about the lxml-checkins
mailing list