[PySide] Problems with QStyle deletion

John Ehresman jpe at wingware.com
Thu Nov 15 23:52:06 CET 2012


I'm trying to fix a bug that causes segfaults if QApplication.style()
and QApplication.setStyle() are used repeatedly.  I think the issue is:

1) a PyObject* is created for the QStyle* returned by style() and its
shiboken parent is set to the global app which adds 1 to the refcount

2) the next call to setStyle delete's the C++ QStyle but the PyObject*
remains in the binding map

3) at some future point, another C++ object is created with the same
address as the first QStyle* and unpredictable errors occur if the new
C++ object is not a QStyle

I was expecting pyside to connect to the destroyed signal (QStyle is a
QObject) and for the PyObject* to be removed from the binding map when
the QStyle is deleted, but that couldn't see that happening when I
stepped through the QObject destructor.

Any hints of how to fix this would be appreciated.

Thanks,

John



More information about the PySide mailing list