Il giorno gio, 05/08/2010 alle 03.10 -0400, Luke Campagnola ha scritto: > I believe I have run into a class of bugs in PyQt4. I originally found > that QSpinBox.lineEdit() returns a QLineEdit instance which does not > maintain its reference count properly after the original QSpinBox is > deleted. Thus it is possible to either 1) have uncollectable LineEdits > lingering in memory, or 2) crash the program by accessing the LineEdit > (see example below). > > > The same bug also applies to: > - QAbstractSpinBox.lineEdit > - QComboBox.lineEdit, > - QAbstractScrollArea.horizontalScrollBar > - QAbstractScrollArea.verticalScrollBar > - QTreeView.header > - QSplitter.handle > > > .. and likely many others. In the best case, this bug causes minor > memory leaks that few people are likely to notice. In the worst case, > it causes crashes which are very difficult to debug if you don't have > easy access to debugging symbols (ie using windows binaries). > > > $ python > >>> from PyQt4.QtGui import * > >>> a = QApplication([]) > >>> s = QSpinBox() > >>> l = s.lineEdit() > >>> del s > >>> l.text() > Segmentation fault
PySide is more forgiving and raise the following error: RuntimeError: Internal C++ object already deleted. > _______________________________________________ > PyQt mailing list PyQt@riverbankcomputing.com > http://www.riverbankcomputing.com/mailman/listinfo/pyqt _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt