filter: prevent assert trap on exit filters

This "bug" is found using Qt 5.10 compiled in developer mode. Access
the filers, click a little around here, close the filters. Almost every
time the following assert is triggered:

ASSERT failure in QPersistentModelIndex::~QPersistentModelIndex:
"persistent model indexes corrupted", file itemmodels/qabstractitemmodel.cpp, line 643

This is relatively deep down in Qt, and it is triggered by clearing the
filters. Trying to force a crash when using the same scenario in Qt 5.10
compiled for production (so no active asserts) did not result in a crash.
So, upto this time, it is unclear if the Qt assert points out a real problem,
or it is some false alarm (for whatever reason).

Further investigation shows that the assert can be solved by changing the
invalidate() to an invalidateFilter(). Indeed, the last variant is a little
more lightweigt, and does seem to do the same job from a functional point
of view (in this case).

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
This commit is contained in:
Jan Mulder 2017-12-27 08:45:36 +01:00
parent 637210564a
commit 5962f00679

View file

@ -440,7 +440,7 @@ void MultiFilterSortModel::myInvalidate()
divesDisplayed = 0; divesDisplayed = 0;
invalidate(); invalidateFilter();
// first make sure the trips are no longer shown as selected // first make sure the trips are no longer shown as selected
// (but without updating the selection state of the dives... this just cleans // (but without updating the selection state of the dives... this just cleans