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
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to