summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2012-04-07 23:26:05 +0200
committerStefan Behnel <stefan_ml@behnel.de>2012-04-07 23:26:05 +0200
commitea53ceaf7e44ba4fbb5c818ae31370932f47774e (patch)
tree695f221d57d4242e707d3db252b7302d143502ad /src
parente4789f6d4b9f7ac76c77415dd71523b8fdf7a242 (diff)
downloadpython-lxml-ea53ceaf7e44ba4fbb5c818ae31370932f47774e.tar.gz
code cleanup: replace call to PyErr_NoMemory() by explicit exception
Diffstat (limited to 'src')
-rw-r--r--src/lxml/apihelpers.pxi18
-rw-r--r--src/lxml/cleanup.pxi6
-rw-r--r--src/lxml/dtd.pxi2
-rw-r--r--src/lxml/extensions.pxi6
-rw-r--r--src/lxml/lxml.etree.pyx10
-rw-r--r--src/lxml/objectpath.pxi4
-rw-r--r--src/lxml/parser.pxi14
-rw-r--r--src/lxml/proxy.pxi3
-rw-r--r--src/lxml/python.pxd3
-rw-r--r--src/lxml/schematron.pxi2
-rw-r--r--src/lxml/serializer.pxi15
-rw-r--r--src/lxml/xslt.pxi8
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