diff options
| author | Stefan Behnel <stefan_ml@behnel.de> | 2012-04-07 23:26:05 +0200 |
|---|---|---|
| committer | Stefan Behnel <stefan_ml@behnel.de> | 2012-04-07 23:26:05 +0200 |
| commit | ea53ceaf7e44ba4fbb5c818ae31370932f47774e (patch) | |
| tree | 695f221d57d4242e707d3db252b7302d143502ad /src | |
| parent | e4789f6d4b9f7ac76c77415dd71523b8fdf7a242 (diff) | |
| download | python-lxml-ea53ceaf7e44ba4fbb5c818ae31370932f47774e.tar.gz | |
code cleanup: replace call to PyErr_NoMemory() by explicit exception
Diffstat (limited to 'src')
| -rw-r--r-- | src/lxml/apihelpers.pxi | 18 | ||||
| -rw-r--r-- | src/lxml/cleanup.pxi | 6 | ||||
| -rw-r--r-- | src/lxml/dtd.pxi | 2 | ||||
| -rw-r--r-- | src/lxml/extensions.pxi | 6 | ||||
| -rw-r--r-- | src/lxml/lxml.etree.pyx | 10 | ||||
| -rw-r--r-- | src/lxml/objectpath.pxi | 4 | ||||
| -rw-r--r-- | src/lxml/parser.pxi | 14 | ||||
| -rw-r--r-- | src/lxml/proxy.pxi | 3 | ||||
| -rw-r--r-- | src/lxml/python.pxd | 3 | ||||
| -rw-r--r-- | src/lxml/schematron.pxi | 2 | ||||
| -rw-r--r-- | src/lxml/serializer.pxi | 15 | ||||
| -rw-r--r-- | src/lxml/xslt.pxi | 8 |
12 files changed, 43 insertions, 48 deletions
diff --git a/src/lxml/apihelpers.pxi b/src/lxml/apihelpers.pxi index 8025a9bc..6b6f607a 100644 --- a/src/lxml/apihelpers.pxi +++ b/src/lxml/apihelpers.pxi @@ -130,7 +130,7 @@ cdef _Element _makeElement(tag, xmlDoc* c_doc, _Document doc, if c_node is NULL: if doc is None and c_doc is not NULL: tree.xmlFreeDoc(c_doc) - return python.PyErr_NoMemory() + raise MemoryError() try: if doc is None: tree.xmlDocSetRootElement(c_doc, c_node) @@ -175,7 +175,7 @@ cdef int _initNewElement(_Element element, bint is_html, name_utf, ns_utf, if c_node is NULL: if c_doc is not NULL: tree.xmlFreeDoc(c_doc) - return python.PyErr_NoMemory() + raise MemoryError() tree.xmlDocSetRootElement(c_doc, c_node) doc = _documentFactory(c_doc, parser) # add namespaces to node if necessary @@ -205,7 +205,7 @@ cdef _Element _makeSubElement(_Element parent, tag, text, tail, c_node = _createElement(c_doc, name_utf) if c_node is NULL: - return python.PyErr_NoMemory() + raise MemoryError() tree.xmlAddChild(parent._c_node, c_node) try: @@ -340,8 +340,7 @@ cdef int _removeUnusedNamespaceDeclarations(xmlNode* c_element) except -1: if c_nsref_ptr is NULL: if c_ns_list is not NULL: stdlib.free(c_ns_list) - python.PyErr_NoMemory() - return -1 + raise MemoryError() c_ns_list = c_nsref_ptr c_ns_list[c_ns_list_len].ns = c_nsdef @@ -363,8 +362,7 @@ cdef int _removeUnusedNamespaceDeclarations(xmlNode* c_element) except -1: if c_nsref_ptr is NULL: if c_ns_list is not NULL: stdlib.free(c_ns_list) - python.PyErr_NoMemory() - return -1 + raise MemoryError() c_ns_list = c_nsref_ptr c_ns_list[c_ns_list_len].ns = c_nsdef @@ -1036,7 +1034,7 @@ cdef int _copyTail(xmlNode* c_tail, xmlNode* c_target) except -1: else: c_new_tail = tree.xmlCopyNode(c_tail, 0) if c_new_tail is NULL: - python.PyErr_NoMemory() + raise MemoryError() tree.xmlAddNextSibling(c_target, c_new_tail) c_target = c_new_tail c_tail = _textNodeOrSkip(c_tail.next) @@ -1052,7 +1050,7 @@ cdef int _copyNonElementSiblings(xmlNode* c_node, xmlNode* c_target) except -1: while c_sibling != c_node: c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1) if c_copy is NULL: - python.PyErr_NoMemory() + raise MemoryError() tree.xmlAddPrevSibling(c_target, c_copy) c_sibling = c_sibling.next while c_sibling.next != NULL and \ @@ -1061,7 +1059,7 @@ cdef int _copyNonElementSiblings(xmlNode* c_node, xmlNode* c_target) except -1: c_sibling = c_sibling.next c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1) if c_copy is NULL: - python.PyErr_NoMemory() + raise MemoryError() tree.xmlAddNextSibling(c_target, c_copy) cdef int _deleteSlice(_Document doc, xmlNode* c_node, diff --git a/src/lxml/cleanup.pxi b/src/lxml/cleanup.pxi index d1eeeaa5..47dd3028 100644 --- a/src/lxml/cleanup.pxi +++ b/src/lxml/cleanup.pxi @@ -39,7 +39,7 @@ def strip_attributes(tree_or_element, *attribute_names): # them from the doc dict and do pointer comparisons c_ns_tags = <char**> stdlib.malloc(sizeof(char*) * len(ns_tags) * 2 + 2) if c_ns_tags is NULL: - python.PyErr_NoMemory() + raise MemoryError() try: c_tag_count = _mapTagsToCharArray(element._doc._c_doc, ns_tags, c_ns_tags) @@ -125,7 +125,7 @@ def strip_elements(tree_or_element, *tag_names, bint with_tail=True): # them from the doc dict and do pointer comparisons c_ns_tags = <char**> stdlib.malloc(sizeof(char*) * len(ns_tags) * 2 + 2) if c_ns_tags is NULL: - python.PyErr_NoMemory() + raise MemoryError() try: c_tag_count = _mapTagsToCharArray(doc._c_doc, ns_tags, c_ns_tags) @@ -216,7 +216,7 @@ def strip_tags(tree_or_element, *tag_names): # them from the doc dict and do pointer comparisons c_ns_tags = <char**> stdlib.malloc(sizeof(char*) * len(ns_tags) * 2 + 2) if c_ns_tags is NULL: - python.PyErr_NoMemory() + raise MemoryError() try: c_tag_count = _mapTagsToCharArray(doc._c_doc, ns_tags, c_ns_tags) diff --git a/src/lxml/dtd.pxi b/src/lxml/dtd.pxi index 0d608245..88451ed6 100644 --- a/src/lxml/dtd.pxi +++ b/src/lxml/dtd.pxi @@ -402,6 +402,6 @@ cdef DTD _dtdFactory(tree.xmlDtd* c_dtd): dtd = DTD.__new__(DTD) dtd._c_dtd = tree.xmlCopyDtd(c_dtd) if dtd._c_dtd is NULL: - python.PyErr_NoMemory() + raise MemoryError() _Validator.__init__(dtd) return dtd diff --git a/src/lxml/extensions.pxi b/src/lxml/extensions.pxi index 91d9b0c0..2405abe3 100644 --- a/src/lxml/extensions.pxi +++ b/src/lxml/extensions.pxi @@ -469,7 +469,7 @@ cdef class _ExsltRegExp: elif isinstance(firstnode, _Element): c_text = tree.xmlNodeGetContent((<_Element>firstnode)._c_node) if c_text is NULL: - python.PyErr_NoMemory() + raise MemoryError() try: s = funicode(c_text) finally: @@ -593,12 +593,12 @@ cdef xpath.xmlXPathObject* _wrapXPathObject(object obj, _Document doc, # append a comment node to keep the text nodes separate c_node = tree.xmlNewDocComment(doc._c_doc, "") if c_node is NULL: - python.PyErr_NoMemory() + raise MemoryError() tree.xmlAddChild(fake_node._c_node, c_node) context._hold(value) c_node = tree.xmlNewDocText(doc._c_doc, _cstr(value)) if c_node is NULL: - python.PyErr_NoMemory() + raise MemoryError() tree.xmlAddChild(fake_node._c_node, c_node) xpath.xmlXPathNodeSetAdd(resultSet, c_node) else: diff --git a/src/lxml/lxml.etree.pyx b/src/lxml/lxml.etree.pyx index f41eff92..c9494428 100644 --- a/src/lxml/lxml.etree.pyx +++ b/src/lxml/lxml.etree.pyx @@ -440,7 +440,7 @@ cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]: # declare the namespace and return it c_ns = tree.xmlNewNs(c_node, c_href, c_prefix) if c_ns is NULL: - python.PyErr_NoMemory() + raise MemoryError() return c_ns @cython.final @@ -1765,17 +1765,17 @@ cdef public class _ElementTree [ type LxmlElementTreeType, if c_doc.intSubset is not NULL and doc._c_doc.intSubset is NULL: doc._c_doc.intSubset = tree.xmlCopyDtd(c_doc.intSubset) if doc._c_doc.intSubset is NULL: - python.PyErr_NoMemory() + raise MemoryError() if c_doc.extSubset is not NULL and not doc._c_doc.extSubset is NULL: doc._c_doc.extSubset = tree.xmlCopyDtd(c_doc.extSubset) if doc._c_doc.extSubset is NULL: - python.PyErr_NoMemory() + raise MemoryError() return _elementTreeFactory(None, root) elif self._doc is not None: _assertValidDoc(self._doc) c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1) if c_doc is NULL: - python.PyErr_NoMemory() + raise MemoryError() doc = _documentFactory(c_doc, self._doc._parser) return _elementTreeFactory(doc, None) else: @@ -1901,7 +1901,7 @@ cdef public class _ElementTree [ type LxmlElementTreeType, c_path = tree.xmlGetNodePath(element._c_node) _destroyFakeDoc(doc._c_doc, c_doc) if c_path is NULL: - python.PyErr_NoMemory() + raise MemoryError() path = funicode(c_path) tree.xmlFree(c_path) return path diff --git a/src/lxml/objectpath.pxi b/src/lxml/objectpath.pxi index 85a652f1..db7f167d 100644 --- a/src/lxml/objectpath.pxi +++ b/src/lxml/objectpath.pxi @@ -167,7 +167,7 @@ cdef _ObjectPath* _buildObjectPathSegments(path_list) except NULL: c_path_segments = <_ObjectPath*>python.PyMem_Malloc( sizeof(_ObjectPath) * python.PyList_GET_SIZE(path_list)) if c_path_segments is NULL: - python.PyErr_NoMemory() + raise MemoryError() c_path = c_path_segments for href, name, index in path_list: if href is None: @@ -179,7 +179,7 @@ cdef _ObjectPath* _buildObjectPathSegments(path_list) except NULL: else: c_path[0].name = _cstr(name) c_path[0].index = index - c_path = c_path + 1 + c_path += 1 return c_path_segments cdef _findObjectPath(_Element root, _ObjectPath* c_path, Py_ssize_t c_path_len, diff --git a/src/lxml/parser.pxi b/src/lxml/parser.pxi index e6b0bf70..e9e4dead 100644 --- a/src/lxml/parser.pxi +++ b/src/lxml/parser.pxi @@ -770,7 +770,7 @@ cdef class _BaseParser: self._parse_options & xmlparser.XML_PARSE_DTDATTR) pctxt = self._newParserCtxt() if pctxt is NULL: - python.PyErr_NoMemory() + raise MemoryError() _initParserContext(self._parser_context, self._resolvers, pctxt) if self._remove_comments: pctxt.sax.comment = NULL @@ -791,7 +791,7 @@ cdef class _BaseParser: self._parse_options & xmlparser.XML_PARSE_DTDATTR) pctxt = self._newPushParserCtxt() if pctxt is NULL: - python.PyErr_NoMemory() + raise MemoryError() _initParserContext( self._push_parser_context, self._resolvers, pctxt) if self._remove_comments: @@ -1505,7 +1505,7 @@ cdef xmlDoc* _newXMLDoc() except NULL: cdef xmlDoc* result result = tree.xmlNewDoc(NULL) if result is NULL: - python.PyErr_NoMemory() + raise MemoryError() if result.encoding is NULL: result.encoding = tree.xmlStrdup("UTF-8") __GLOBAL_PARSER_CONTEXT.initDocDict(result) @@ -1515,7 +1515,7 @@ cdef xmlDoc* _newHTMLDoc() except NULL: cdef xmlDoc* result result = tree.htmlNewDoc(NULL, NULL) if result is NULL: - python.PyErr_NoMemory() + raise MemoryError() __GLOBAL_PARSER_CONTEXT.initDocDict(result) return result @@ -1527,7 +1527,7 @@ cdef xmlDoc* _copyDoc(xmlDoc* c_doc, int recursive) except NULL: else: result = tree.xmlCopyDoc(c_doc, 0) if result is NULL: - python.PyErr_NoMemory() + raise MemoryError() __GLOBAL_PARSER_CONTEXT.initDocDict(result) return result @@ -1540,7 +1540,7 @@ cdef xmlDoc* _copyDocRoot(xmlDoc* c_doc, xmlNode* c_new_root) except NULL: with nogil: c_node = tree.xmlDocCopyNode(c_new_root, result, 1) # recursive if c_node is NULL: - python.PyErr_NoMemory() + raise MemoryError() tree.xmlDocSetRootElement(result, c_node) _copyTail(c_new_root.next, c_node) return result @@ -1550,7 +1550,7 @@ cdef xmlNode* _copyNodeToDoc(xmlNode* c_node, xmlDoc* c_doc) except NULL: cdef xmlNode* c_root c_root = tree.xmlDocCopyNode(c_node, c_doc, 1) # recursive if c_root is NULL: - python.PyErr_NoMemory() + raise MemoryError() _copyTail(c_node.next, c_root) return c_root diff --git a/src/lxml/proxy.pxi b/src/lxml/proxy.pxi index 5a7d1993..a9e0600b 100644 --- a/src/lxml/proxy.pxi +++ b/src/lxml/proxy.pxi @@ -235,8 +235,7 @@ cdef int _growNsCache(_nscache* c_ns_cache) except -1: else: stdlib.free(c_ns_cache.new) stdlib.free(c_ns_cache.old) - python.PyErr_NoMemory() - return -1 + raise MemoryError() return 0 cdef inline int _appendToNsCache(_nscache* c_ns_cache, diff --git a/src/lxml/python.pxd b/src/lxml/python.pxd index 27b9f895..af857caa 100644 --- a/src/lxml/python.pxd +++ b/src/lxml/python.pxd @@ -88,8 +88,7 @@ cdef extern from "Python.h": cdef void* PyMem_Realloc(void* p, size_t size) cdef void PyMem_Free(void* p) - # these two always return NULL to pass on the exception - cdef object PyErr_NoMemory() + # always returns NULL to pass on the exception cdef object PyErr_SetFromErrno(object type) cdef PyThreadState* PyEval_SaveThread() diff --git a/src/lxml/schematron.pxi b/src/lxml/schematron.pxi index 3236bd62..c7950109 100644 --- a/src/lxml/schematron.pxi +++ b/src/lxml/schematron.pxi @@ -153,7 +153,7 @@ cdef class Schematron(_Validator): valid_ctxt = schematron.xmlSchematronNewValidCtxt( self._c_schema, options) if valid_ctxt is NULL: - return python.PyErr_NoMemory() + raise MemoryError() if _LIBXML_VERSION_INT >= 20632: schematron.xmlSchematronSetValidStructuredErrors( diff --git a/src/lxml/serializer.pxi b/src/lxml/serializer.pxi index 9d237b2d..2263ad17 100644 --- a/src/lxml/serializer.pxi +++ b/src/lxml/serializer.pxi @@ -30,7 +30,7 @@ cdef _textToString(xmlNode* c_node, encoding, bint with_tail): c_buffer = tree.xmlBufferCreate() if c_buffer is NULL: - return python.PyErr_NoMemory() + raise MemoryError() with nogil: error_result = tree.xmlNodeBufGetContent(c_buffer, c_node) @@ -114,7 +114,7 @@ cdef _tostring(_Element element, encoding, doctype, method, c_buffer = tree.xmlAllocOutputBuffer(enchandler) if c_buffer is NULL: tree.xmlCharEncCloseFunc(enchandler) - return python.PyErr_NoMemory() + raise MemoryError() with nogil: _writeNodeToBuffer(c_buffer, element._c_node, c_enc, c_doctype, c_method, @@ -179,12 +179,11 @@ cdef bytes _tostringC14N(element_or_tree, bint exclusive, bint with_comments): cdef _raiseSerialisationError(int error_result): if error_result == xmlerror.XML_ERR_NO_MEMORY: - return python.PyErr_NoMemory() - else: - message = ErrorTypes._getName(error_result) - if message is None: - message = u"unknown error %d" % error_result - raise SerialisationError, message + raise MemoryError() + message = ErrorTypes._getName(error_result) + if message is None: + message = u"unknown error %d" % error_result + raise SerialisationError, message ############################################################ # low-level serialisation functions diff --git a/src/lxml/xslt.pxi b/src/lxml/xslt.pxi index 1e087808..73a1b463 100644 --- a/src/lxml/xslt.pxi +++ b/src/lxml/xslt.pxi @@ -189,7 +189,7 @@ cdef class XSLTAccessControl: read_network=True, write_network=True): self._prefs = xslt.xsltNewSecurityPrefs() if self._prefs is NULL: - python.PyErr_NoMemory() + raise MemoryError() self._setAccess(xslt.XSLT_SECPREF_READ_FILE, read_file) self._setAccess(xslt.XSLT_SECPREF_WRITE_FILE, write_file) self._setAccess(xslt.XSLT_SECPREF_CREATE_DIRECTORY, create_dir) @@ -498,7 +498,7 @@ cdef class XSLT: transform_ctxt = xslt.xsltNewTransformContext(self._c_style, c_doc) if transform_ctxt is NULL: _destroyFakeDoc(input_doc._c_doc, c_doc) - python.PyErr_NoMemory() + raise MemoryError() # using the stylesheet dict is safer than using a possibly # unrelated dict from the current thread. Almost all @@ -666,7 +666,7 @@ cdef XSLT _copyXSLT(XSLT stylesheet): new_xslt._c_style = xslt.xsltParseStylesheetDoc(c_doc) if new_xslt._c_style is NULL: tree.xmlFreeDoc(c_doc) - python.PyErr_NoMemory() + raise MemoryError() return new_xslt @@ -698,7 +698,7 @@ cdef class _XSLTResultTree(_ElementTree): r = xslt.xsltSaveResultToString(s, l, doc._c_doc, self._xslt._c_style) if r == -1: - python.PyErr_NoMemory() + raise MemoryError() def __str__(self): cdef char* s = NULL |
