Yes, in that case Cython manages the reference count the right way. You do NOT NEED to INCREF/DECREF. In fact, your code is introducing a reference leak.
On Wed, Aug 5, 2009 at 7:46 AM, Dag Sverre Seljebotn<[email protected]> wrote: > I'm not sure of this, but I know how I'd find out: Compile the pyx with the > -a switch, open the generated html, and click on the line in question. > > Dag Sverre Seljebotn > -----Original Message----- > From: Daniele Pianu <[email protected]> > Date: Wednesday, Aug 5, 2009 11:26 am > Subject: [Cython] Reference count on object assignment > To: [email protected]: [email protected] > > Hi all, >>I've a simple question about the reference count automatically >>performed by Cython/Pyrex. I've a cdef function in an ipotetic >>extension type: >> >>...... >> >>cdef TakeObject( self, void* obj ): >> self.obj = <object>obj >> Py_INCREF( self.obj ) >> >>....... >> >>The function receives a void pointer that I know it's always a pointer to a >>Python object. The extension type must mantain a reference to >>this object in its obj attribute, so, I perform >>the assignment "self.obj = <object>obj". The reference should be valid after >>the object pointed by the obj method argument is deref-counted. For this >>reason, I increment manually the reference count of the same object (now >>pointed by the obj instance attribute too). The question >>is: in an assignment where a <object> cast is performed, is the >>reference count automatically handled? Or do I need to manually >>increment-decrement the reference count as in the example above? And, if >>self.obj previously pointed to another object whose reference >>counted was incremented, do I have to decrement the reference count to avoid >>a possible memory leak? I've checked a bit the code and it seems the, first >>than the assignment is done, the self.obj ref count is >>decremented, but I've not understood if it's incremented too after the new >>assignment. >> >>Thanks for any advice, >>Daniele >>_______________________________________________ >>Cython-dev mailing list >>[email protected] >>http://codespeak.net/mailman/listinfo/cython-dev >> > > _______________________________________________ > Cython-dev mailing list > [email protected] > http://codespeak.net/mailman/listinfo/cython-dev > -- Lisandro Dalcín --------------- Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC) Instituto de Desarrollo Tecnológico para la Industria Química (INTEC) Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET) PTLC - Güemes 3450, (3000) Santa Fe, Argentina Tel/Fax: +54-(0)342-451.1594 _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
