[Cython] Control Flow

Stefan Behnel stefan_ml at behnel.de
Sat May 28 18:06:59 CEST 2011


Vitja,

here are some more quirks, but they are minor issues. I'll commit my 
changes to lxml to keep it working, and then merge in the branch. It's 
certainly in a "good enough for a merge" state.

I'm actually surprised how few problems I had to fix, given how old the 
code in lxml is by now. Let's see how much of Sage we break.

Stefan


Some more issues:

     cdef Py_ssize_t c = 0, i
     [...]
     while c_node is not NULL and c < count:
         for i from 0 <= i < step:
             c_next = next_element(c_next)
         _removeNode(doc, c_node)
         c = c + 1
         c_node = c_next
     return 0

src/lxml/apihelpers.pxi:1079:23: Unused entry 'i'

(Although the best fix is to change the code to for-in-range() here...)


Here's another interesting constellation:

         live_refs = _convert_xslt_parameters(transform_ctxt, kw, &params)
         c_result = self._run_transform(
             c_doc, params, context, transform_ctxt)
         if params is not NULL:
             # deallocate space for parameters
             python.PyMem_Free(params)
         live_refs = None   # release objects

src/lxml/xslt.pxi:519:22: Unused entry 'live_refs'

So, holding on to Python references to keep their C char* alive gives me a 
warning. Fine. I guess I'll have to live with that...


Another missing bit:

     cdef void registerExsltFunctions(self):
         cdef xpath.xmlXPathContext* ctxt = self._xpathCtxt
         cdef int i
         cdef char* c_href
         if xslt.LIBXSLT_VERSION < 10125:
             # we'd only execute dummy functions anyway
             return
         tree.xmlHashScan(
             self._xpathCtxt.nsHash, _registerExsltFunctionsForNamespaces,
             self._xpathCtxt)

src/lxml/xpath.pxi:80:34: Unused entry 'ctxt'

Ok, right, "ctxt" is unused here. But all *3* declarations are actually 
left-over code from the last refactoring. None of them is used, and I only 
get one warning?


More information about the cython-devel mailing list