[Lxml-checkins] r33706 - in lxml/trunk: . src/lxml
scoder at codespeak.net
scoder at codespeak.net
Wed Oct 25 09:48:33 CEST 2006
Author: scoder
Date: Wed Oct 25 09:48:30 2006
New Revision: 33706
Modified:
lxml/trunk/CHANGES.txt
lxml/trunk/src/lxml/docloader.pxi
lxml/trunk/src/lxml/parser.pxi
lxml/trunk/src/lxml/xslt.pxi
Log:
clear resolver context after use
Modified: lxml/trunk/CHANGES.txt
==============================================================================
--- lxml/trunk/CHANGES.txt (original)
+++ lxml/trunk/CHANGES.txt Wed Oct 25 09:48:30 2006
@@ -18,6 +18,9 @@
Bugs fixed
----------
+* Open files and XML strings returned by Python resolvers were not
+ closed/freed
+
* Copying Comments and ProcessingInstructions failed
* Memory leak for external URLs in _XSLTProcessingInstruction.parseXSL()
Modified: lxml/trunk/src/lxml/docloader.pxi
==============================================================================
--- lxml/trunk/src/lxml/docloader.pxi (original)
+++ lxml/trunk/src/lxml/docloader.pxi Wed Oct 25 09:48:30 2006
@@ -98,3 +98,7 @@
_ExceptionContext.__init__(self)
self._resolvers = resolvers
self._storage = _TempStore()
+
+ cdef void clear(self):
+ _ExceptionContext.clear(self)
+ self._storage.clear()
Modified: lxml/trunk/src/lxml/parser.pxi
==============================================================================
--- lxml/trunk/src/lxml/parser.pxi (original)
+++ lxml/trunk/src/lxml/parser.pxi Wed Oct 25 09:48:30 2006
@@ -461,6 +461,7 @@
recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
return _handleParseResult(pctxt, result, None, recover)
finally:
+ self._context.clear()
self._error_log.disconnect()
self._unlockParser()
@@ -492,6 +493,7 @@
recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
return _handleParseResult(pctxt, result, None, recover)
finally:
+ self._context.clear()
self._error_log.disconnect()
self._unlockParser()
@@ -519,6 +521,7 @@
recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
return _handleParseResult(pctxt, result, c_filename, recover)
finally:
+ self._context.clear()
self._error_log.disconnect()
self._unlockParser()
@@ -542,6 +545,7 @@
recover = self._parse_options & xmlparser.XML_PARSE_RECOVER
return _handleParseResult(pctxt, result, filename, recover)
finally:
+ self._context.clear()
self._error_log.disconnect()
self._unlockParser()
Modified: lxml/trunk/src/lxml/xslt.pxi
==============================================================================
--- lxml/trunk/src/lxml/xslt.pxi (original)
+++ lxml/trunk/src/lxml/xslt.pxi Wed Oct 25 09:48:30 2006
@@ -425,23 +425,26 @@
_destroyFakeDoc(input_doc._c_doc, c_doc)
self._error_log.disconnect()
- if self._xslt_resolver_context._has_raised():
- if c_result is not NULL:
- tree.xmlFreeDoc(c_result)
- self._xslt_resolver_context._raise_if_stored()
-
- if c_result is NULL:
- error = self._error_log.last_error
- if error is not None and error.message:
- if error.line >= 0:
- message = "%s, line %d" % (error.message, error.line)
+ try:
+ if self._xslt_resolver_context._has_raised():
+ if c_result is not NULL:
+ tree.xmlFreeDoc(c_result)
+ self._xslt_resolver_context._raise_if_stored()
+
+ if c_result is NULL:
+ error = self._error_log.last_error
+ if error is not None and error.message:
+ if error.line >= 0:
+ message = "%s, line %d" % (error.message, error.line)
+ else:
+ message = error.message
+ elif error.line >= 0:
+ message = "Error applying stylesheet, line %d" % error.line
else:
- message = error.message
- elif error.line >= 0:
- message = "Error applying stylesheet, line %d" % error.line
- else:
- message = "Error applying stylesheet"
- raise XSLTApplyError, message
+ message = "Error applying stylesheet"
+ raise XSLTApplyError, message
+ finally:
+ self._xslt_resolver_context.clear()
result_doc = _documentFactory(c_result, input_doc._parser)
return _xsltResultTreeFactory(result_doc, self, profile_doc)
More information about the lxml-checkins
mailing list