[Cython] Two minor bugs

Robert Bradshaw robertwb at gmail.com
Sun Mar 3 08:45:53 CET 2013


On Fri, Mar 1, 2013 at 10:52 PM, Nikita Nemkin <nikita at nemkin.ru> wrote:
> Hi,
>
> I'm new to this list and to Cython internals.
>
> Reporting two recently found bugs:
>
> 1. Explicit <bytes> cast fails unexpectedly:
>
>        ctypedef char* LPSTR
>        cdef LPSTR c_str = b"ascii"
>        <bytes>c_str  # Failure: Python objects cannot be cast from pointers
> of primitive types
>
>    The problem is CTypedefType not delegating can_coerce_to_pyobject() to
> the original type.
>    (because BaseType.can_coerce_to_pyobject takes precedence over
> __getattr__).
>    Patch+test case and attached.

Thanks! Applied.

>    Interestingly, implicit casts use a different code path and are not
> affected.
>
>    There is potential for similar bugs in the future, because __getattr__
>    delegation is inherently brittle in the presence of the base class
> (BaseType).

Yes, very true.

> 2. This recently added code does not compile with MSVC:
>
> https://github.com/cython/cython/blob/master/Cython/Utility/TypeConversion.c#L140-142
>    Interleaving declarations and statements is not allowed in C90...

Fixed https://github.com/cython/cython/commit/24f56e14194e14c706beb6d0ee58a58e77b0b03e

- Robert


More information about the cython-devel mailing list