From 5962f00679fae5555ae6c09c0b933fba2d6702aa Mon Sep 17 00:00:00 2001 From: Jan Mulder Date: Wed, 27 Dec 2017 08:45:36 +0100 Subject: [PATCH] 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 --- qt-models/filtermodels.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt-models/filtermodels.cpp b/qt-models/filtermodels.cpp index 48a2fd9b9..437640107 100644 --- a/qt-models/filtermodels.cpp +++ b/qt-models/filtermodels.cpp @@ -440,7 +440,7 @@ void MultiFilterSortModel::myInvalidate() divesDisplayed = 0; - invalidate(); + invalidateFilter(); // first make sure the trips are no longer shown as selected // (but without updating the selection state of the dives... this just cleans