[Cython] Bug in Cython producing incorrect C code

mark florisson markflorisson88 at gmail.com
Tue Jan 24 14:53:20 CET 2012


On 24 January 2012 11:37, Konrad Hinsen <konrad.hinsen at fastmail.net> wrote:
> Compiling the attached Cython file produced the attached C file which
> has errors in lines 532-534:
>
>  __pyx_v_self->xx = None;
>  __pyx_v_self->yy = None;
>  __pyx_v_self->zz = None;
>
> There is no C symbol "None", so this doesn't compile.
>
> I first noticed the bug in Cython 0.15, but it's still in the latest
> revision from Github.
>
> Konrad.
>
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> http://mail.python.org/mailman/listinfo/cython-devel
>

Hm, it seems the problem is that the call to the builtin float results
in SimpleCallNode being replaced with PythonCApiNode, which then
generates the result code, but the list of coerced nodes are
CloneNodes of the original rhs, and CloneNode does not generate the
result code of the original rhs (i.e. allocate and assign to a temp),
which results in a None result.

Maybe CascadedAssignmentNode should replace CloneNode.arg with the
latest self.rhs in generate_assignment_code? I'm not entirely sure.


More information about the cython-devel mailing list