Python Function pointer in C
Nick Coghlan
ncoghlan at email.com
Thu Nov 25 09:10:24 EST 2004
David Gilbert wrote:
> I'm trying to maintain the interface to KQueue for FreeBSD. At one
> point, the C module stores an opaque object in a C structure such that
> the opaque pointer can be used later by the application.
In this case, a Py_IncRef/DecRef pair is definitely required - the 'borrowed'
reference from the Python function call only lasts until the function returns.
You need your own reference if you're going to hang on to the pointer.
> How do I define "udata" such that I can stuff the lambda reference in
> there?
PyObject* should be fine so long as the references are handled correctly.
> Now... I've wondered if this is a reference counting issue --- but
> this still happens when I use the name of a module global function as
> udata.
I'd suggest adding the IncRef/DecRef pair and trying it out again. I can't see
anything else obviously wrong in the fragments you've posted.
If that was the sole problem though, I would have expected the same as you - for
the module global function to work correctly.
Sorry I can't be more help. . .
Cheers,
Nick.
More information about the Python-list
mailing list