[Lxml-checkins] r33836 - lxml/trunk/src/lxml
scoder at codespeak.net
scoder at codespeak.net
Sat Oct 28 15:47:34 CEST 2006
Author: scoder
Date: Sat Oct 28 15:47:31 2006
New Revision: 33836
Modified:
lxml/trunk/src/lxml/parser.pxi
lxml/trunk/src/lxml/tree.pxd
lxml/trunk/src/lxml/xmlparser.pxd
Log:
free resources after parsing: work-around a crash in libxml2's xmlCtxtReset()
Modified: lxml/trunk/src/lxml/parser.pxi
==============================================================================
--- lxml/trunk/src/lxml/parser.pxi (original)
+++ lxml/trunk/src/lxml/parser.pxi Sat Oct 28 15:47:31 2006
@@ -392,8 +392,11 @@
cdef xmlParserCtxt* pctxt
pctxt = self._parser_ctxt
if pctxt is not NULL:
- if pctxt.spaceTab is not NULL: # work around bug in libxml2
- xmlparser.xmlClearParserCtxt(pctxt)
+ if pctxt.spaceTab is NULL:
+ # work around bug in libxml2
+ pctxt.spaceTab = <int*> tree.xmlMalloc(10 * sizeof(int))
+ pctxt.spaceMax = 10
+ xmlparser.xmlClearParserCtxt(pctxt)
property error_log:
def __get__(self):
Modified: lxml/trunk/src/lxml/tree.pxd
==============================================================================
--- lxml/trunk/src/lxml/tree.pxd (original)
+++ lxml/trunk/src/lxml/tree.pxd Sat Oct 28 15:47:31 2006
@@ -1,4 +1,4 @@
-from cstd cimport FILE
+from cstd cimport FILE, size_t
cdef extern from "lxml-version.h":
cdef char* LXML_VERSION_STRING
@@ -255,6 +255,9 @@
cdef extern from "libxml/xmlstring.h":
cdef char* xmlStrdup(char* cur)
+cdef extern from "libxml/xmlmemory.h":
+ cdef void* xmlMalloc(size_t size)
+
cdef extern from "etree_defs.h":
cdef int _isElement(xmlNode* node)
cdef char* _getNs(xmlNode* node)
Modified: lxml/trunk/src/lxml/xmlparser.pxd
==============================================================================
--- lxml/trunk/src/lxml/xmlparser.pxd (original)
+++ lxml/trunk/src/lxml/xmlparser.pxd Sat Oct 28 15:47:31 2006
@@ -56,6 +56,7 @@
xmlNode* node
xmlSAXHandler* sax
int* spaceTab
+ int spaceMax
ctypedef enum xmlParserOption:
XML_PARSE_RECOVER = 1 # recover on errors
More information about the lxml-checkins
mailing list