Vitja Makarov, 28.05.2011 14:12:
2011/5/28 Stefan Behnel:
Ok, I think we're done then, right? Anything else to do before merging it
back?

I hope so ;)

I gave your branch a test with lxml and it spit out a couple of missing initialisation warnings. Most of them were due to the usage of C out arguments, e.g.

    cdef Py_ssize_t step
    ...
    _PyEval_SliceIndex(sliceobject.step, &step)

Here, it doesn't matter that "step" isn't initialised. I guess it's still ok to get a warning, since it's not obvious that "step" will always be set by the function call.

Similarly:

    cdef void _receiveXSLTError(void* c_log_handler, char* msg, ...) nogil:
        cdef cstd.va_list args
        ...
        cstd.va_start(args, msg)

Cython now tells me that "args" isn't initialised. That's true again, although this is an even more special case here. I guess I'll have to live with that as well for now, maybe until there's dedicated va_list support in Cython.

Next, I got a crash in a part of code where I was manually releasing the GIL, but only conditionally, and Cython figured out that a variable wasn't initialised in one case and injected an exception. I would have liked to get a compile time warning here, but didn't. I assume that's because it was only a "may be used uninitialised", not a "is used uninitialised"?

I'm currently looking through the other issues. A major problem is that I often relied on Cython setting uninitialised variables to None, especially in performance critical code where I wanted to avoid double initialisations. Cython is smarter now, so this needs fixing in the code. I'm sure I'm not the only one who'll run into that, so more warnings would be very helpful.

Stefan
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to