[Lxml-checkins] r54504 - in lxml/trunk: . src/lxml
scoder at codespeak.net
scoder at codespeak.net
Tue May 6 22:37:51 CEST 2008
Author: scoder
Date: Tue May 6 22:37:51 2008
New Revision: 54504
Modified:
lxml/trunk/ (props changed)
lxml/trunk/src/lxml/iterparse.pxi
Log:
r4186 at delle: sbehnel | 2008-05-06 21:56:12 +0200
fix iterparse(): proactively free the document on parse errors if Python will not free it for us
Modified: lxml/trunk/src/lxml/iterparse.pxi
==============================================================================
--- lxml/trunk/src/lxml/iterparse.pxi (original)
+++ lxml/trunk/src/lxml/iterparse.pxi Tue May 6 22:37:51 2008
@@ -195,6 +195,11 @@
python.PyList_Append(self._events, (event, node))
return 0
+ cdef void _assureDocGetsFreed(self):
+ if self._c_ctxt.myDoc is not NULL and self._doc is None:
+ tree.xmlFreeDoc(self._c_ctxt.myDoc)
+ self._c_ctxt.myDoc = NULL
+
cdef inline void _pushSaxStartEvent(xmlparser.xmlParserCtxt* c_ctxt,
xmlNode* c_node):
@@ -454,8 +459,8 @@
not context._validator.isvalid()):
self._source = None
del context._events[:]
- _handleParseResult(context, pctxt, NULL,
- self._filename, self._for_html)
+ context._assureDocGetsFreed()
+ _raiseParseError(pctxt, self._filename, context._error_log)
if python.PyList_GET_SIZE(context._events) == 0:
self.root = context._root
self._source = None
More information about the lxml-checkins
mailing list