[Cython] How should be C-clobal deletion handled?

Nikita Nemkin nikita at nemkin.ru
Sat May 25 19:37:29 CEST 2013


On Sat, 25 May 2013 23:29:29 +0600, Vitja Makarov  
<vitja.makarov at gmail.com> wrote:

> 2013/5/25 Stefan Behnel <stefan_ml at behnel.de>
>
>> Am 25.05.2013 08:34, schrieb Robert Bradshaw:
>> > On Thu, May 23, 2013 at 10:02 PM, Vitja Makarov wrote:
>> >> Recently I've found that the following code causes segmentation  
>> fault:
>> >>
>> >> cdef object f
>> >> del f
>> >> print f
>> >>
>> >> So the question is: how should that work?
>> >>
>> >> global objects are implicitly initialized to None and no CF and no cf
>> >> analysis is performed for it.
>> >>
>> >> So I see three options here:
>> >>
>> >> 1. prohibit cglobal deletion
>> >> 2. set it back to None
>> >> 3. check for a null value at every reference and assignment
>> >
>> > I'd go for 1, with 2 as a backup option.
>>
>> +1 for 1.
>>
>> Stefan
>>
>>
>>
> I tried to disable it and found that it's already used for global C++
> objects deletion. It would be strange to have global deletion for C++
> objects and not for ordinary python objects.

There is nothing strange about it.

C++ pointers behave differently from Python objects and users are
well aware of that. Moreover, C++ deletion is a totally different
operation that just happens to reuse the same keyword.


Best regards,
Nikita Nemkin


More information about the cython-devel mailing list