Turns out (one) of my problems was %GCClearCode that was being invoked
after a C++ object's destructor.

There's a note in sipWrapper_dealloc about calling sipWrapper_clear
after td_dealloc:

 Now that the C++ object no longer exists we can tidy up the Python
 object.  We used to do this first but that meant lambda slots were
 removed too soon (if they were connected to QObject.destroyed()).
 
As far as I can tell, for objects with public virtual destructors, this
means SIP will call the C++ destructor first, and then the attached
%GCClearCode. The %GCClearCode documentation doesn't mention this,
though.

Moving sipWrapper_clear above the td_dealloc fixed one of my crashes. :)

- Kevin


_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to