[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