[PyKDE] Abstract annotation and deleting objects

Phil Thompson phil at riverbankcomputing.co.uk
Fri Mar 25 17:47:33 GMT 2005


On Thursday 24 March 2005 1:07 am, James Emerton wrote:
> If a sip specification marks a class with the 'Abstract' annotation,
> the CLASS_CANNOT_CREATE bit is set.  This can also be caused by the
> inclusion of pure virtual methods.

Private pure virtual methods.

> The effect of the CLASS_CANNOT_CREATE bit is to set td_init AND
> td_dealloc to 0 in the generated sipTypeDef.  This causes factory
> methods returning pointers to abstract interfaces to leak memory.
>
> I am going to attempt to patch this, but I still don't know the SIP
> code very well at all.  Anyone know any reason why always generating
> the dealloc_CLASS function might be a bad idea?

I think I just hadn't considered that case. The next snapshot should be fixed.

I'd also question why you are using the Abstract annotation. It's only needed 
if you are skipping a pure virtual in the .sip file - don't use it if you are 
fully specifying the class. I've changed the documentation to try and make 
this clearer.

Phil




More information about the PyQt mailing list