Hi,

Am 04/21/2008 07:00 PM schrieb Robert Bradshaw:
> When you write
> 
>     cdef char* s = x
> 
> where x is a Python object, it sets s to a pointer of the data of s.
> This is why you don't have to worry about allocating/deallocating s.
> However, if you try to use s after x has gone out of scope/has been
> garbage collected, s may contain garbage. Perhaps this is what's
> happening here, and if that's  the case you need to allocate s manually
> and strcpy the contents of the string over.

I've also though of this, but that doesn't help, either. While trying
around a bit I've observed that I don't get a segfault if only C code is
used inside the function. Any Python code, even if not dealing with the
variables, results in a segfault. For example this means a segfault, too:

cdef public void plug_observ_data(plugDefinition *p, const_char_ptr i):
    print "test"

Whereas

cdef public void plug_observ_data(plugDefinition *p, const_char_ptr i):
    puts("test")

works without a problem.

Johannes

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to