[Cython] bug in typed memoryviews (memoryviewslice)

Richard Hansen rhansen at bbn.com
Fri Jan 30 02:39:28 CET 2015


On 01/29/2015 05:14 AM, Richard Hansen wrote:
> On 01/27/2015 05:38 PM, Richard Hansen wrote:
>> Hi all,
>>
>> If I create foo.pyx with the following contents:
>>
>> cpdef object foo():
>>     cdef unsigned char[:] s = <bytearray><unsigned char *>"012345"
>>     return s
>>
>> I notice the following behavior:
>>
>> $ python -c '
>> import foo
>> m=foo.foo()
>> print repr(memoryview(m.base).tobytes())
>> print repr(memoryview(m).tobytes())
>> '
>> '012345'
>> '123450'
>>
>> Notice how the bytes are printed in the wrong order unless I use the
>> original buffer object via the typed memoryview object's base attribute.
> 
> It turns out that this is due to a bug in Python, not Cython.

I submitted a couple of Python bug reports about this, with patches:
http://bugs.python.org/issue23349
http://bugs.python.org/issue23352

-Richard

> Fortunately it's relatively easy to work around this bug.  I submitted a
> pull request containing a workaround:
> 
> https://github.com/cython/cython/pull/367
> 
> -Richard



More information about the cython-devel mailing list