[Lxml-checkins] r46311 - lxml/trunk/src/lxml
scoder at codespeak.net
scoder at codespeak.net
Tue Sep 4 21:32:51 CEST 2007
Author: scoder
Date: Tue Sep 4 21:32:51 2007
New Revision: 46311
Modified:
lxml/trunk/src/lxml/parser.pxi
Log:
feed parser fix
Modified: lxml/trunk/src/lxml/parser.pxi
==============================================================================
--- lxml/trunk/src/lxml/parser.pxi (original)
+++ lxml/trunk/src/lxml/parser.pxi Tue Sep 4 21:32:51 2007
@@ -1,4 +1,4 @@
-# XML parser that provides dictionary sharing
+# Parsers for XML and HTML
cimport xmlparser
cimport htmlparser
@@ -533,11 +533,6 @@
else:
raise TypeError, "Parsing requires string data"
- if py_buffer_len > python.INT_MAX:
- buffer_len = python.INT_MAX
- else:
- buffer_len = <int>py_buffer_len
-
pctxt = self._parser_ctxt
error = 0
if not self._feed_parser_running:
@@ -546,18 +541,26 @@
self._error_log.connect()
__GLOBAL_PARSER_CONTEXT.initParserDict(pctxt)
xmlparser.xmlCtxtUseOptions(pctxt, self._parse_options)
+
+ if py_buffer_len > python.INT_MAX:
+ buffer_len = python.INT_MAX
+ else:
+ buffer_len = <int>py_buffer_len
+
error = xmlparser.xmlCtxtResetPush(
- pctxt, c_data, <int>buffer_len, NULL, c_encoding)
+ pctxt, c_data, buffer_len, NULL, c_encoding)
+
py_buffer_len = py_buffer_len - buffer_len
+ c_data = c_data + buffer_len
while error == 0 and py_buffer_len > 0:
- c_data = c_data + buffer_len
if py_buffer_len > python.INT_MAX:
buffer_len = python.INT_MAX
else:
buffer_len = <int>py_buffer_len
py_buffer_len = py_buffer_len - buffer_len
error = xmlparser.xmlParseChunk(pctxt, c_data, buffer_len, 0)
+ c_data = c_data + buffer_len
if error:
self._feed_parser_running = 0
More information about the lxml-checkins
mailing list