diff options
| author | Stefan Behnel <stefan_ml@behnel.de> | 2020-05-11 22:05:56 +0200 |
|---|---|---|
| committer | Stefan Behnel <stefan_ml@behnel.de> | 2020-05-11 22:05:56 +0200 |
| commit | cfceec54a8d5b684e2572b02addf0adf5e786f2f (patch) | |
| tree | aa2d80dec27d8423495ecbd79c5933273f716e7a /src/lxml | |
| parent | 809e856640c6c1fe27b5962b61f9214f4f4c1ec2 (diff) | |
| download | python-lxml-cfceec54a8d5b684e2572b02addf0adf5e786f2f.tar.gz | |
Make it less likely that the serialisation of large documents (> MAX_INT) is considered a failure due to C integer wrap-around.
Diffstat (limited to 'src/lxml')
| -rw-r--r-- | src/lxml/serializer.pxi | 8 | ||||
| -rw-r--r-- | src/lxml/xslt.pxi | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/lxml/serializer.pxi b/src/lxml/serializer.pxi index 4954a40c..3a26f752 100644 --- a/src/lxml/serializer.pxi +++ b/src/lxml/serializer.pxi @@ -147,7 +147,7 @@ cdef _tostring(_Element element, encoding, doctype, method, c_result_buffer))[:tree.xmlBufUse(c_result_buffer)] finally: error_result = tree.xmlOutputBufferClose(c_buffer) - if error_result < 0: + if error_result == -1: _raiseSerialisationError(error_result) return result @@ -770,7 +770,7 @@ cdef int _serialise_node(tree.xmlOutputBuffer* c_buffer, const_xmlChar* c_doctyp error_result = c_buffer.error if error_result == xmlerror.XML_ERR_OK: error_result = tree.xmlOutputBufferClose(c_buffer) - if error_result > 0: + if error_result != -1: error_result = xmlerror.XML_ERR_OK else: tree.xmlOutputBufferClose(c_buffer) @@ -870,6 +870,8 @@ cdef _tofilelikeC14N(f, _Element element, bint exclusive, bint with_comments, error = tree.xmlOutputBufferClose(c_buffer) if bytes_count < 0: error = bytes_count + elif error != -1: + error = xmlerror.XML_ERR_OK else: raise TypeError(f"File or filename expected, got '{python._fqtypename(f).decode('UTF-8')}'") finally: @@ -1674,7 +1676,7 @@ cdef class _IncrementalFileWriter: error_result = self._c_out.error if error_result == xmlerror.XML_ERR_OK: error_result = tree.xmlOutputBufferClose(self._c_out) - if error_result > 0: + if error_result != -1: error_result = xmlerror.XML_ERR_OK else: tree.xmlOutputBufferClose(self._c_out) diff --git a/src/lxml/xslt.pxi b/src/lxml/xslt.pxi index ce187a9b..e7b49600 100644 --- a/src/lxml/xslt.pxi +++ b/src/lxml/xslt.pxi @@ -744,7 +744,7 @@ cdef class _XSLTResultTree(_ElementTree): rclose = tree.xmlOutputBufferClose(c_buffer) if writer is not None: writer._exc_context._raise_if_stored() - if r < 0 or rclose < 0: + if r < 0 or rclose == -1: python.PyErr_SetFromErrno(IOError) # raises IOError cdef _saveToStringAndSize(self, xmlChar** s, int* l): |
