From f48b8b7bcb42d1d79e4f570a2ec1ec9b2d43b2ff Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 2 Feb 2023 15:19:34 +0100 Subject: [PATCH] AutoTest: Avoid potential crash Invalidating the filter model may crash while updating the source model as it emits a layoutChanged(). Just invalidating the filter works as the sorting of items is not touched. Workaround this by explicitly using invalidateFilter() instead of invalidate(). Task-number: QTBUG-103952 Change-Id: I52abda3936e870bb448c420e98a122edecffda7e Reviewed-by: David Schulz --- src/plugins/autotest/testresultmodel.cpp | 4 ++++ src/plugins/autotest/testresultspane.cpp | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/autotest/testresultmodel.cpp b/src/plugins/autotest/testresultmodel.cpp index 8a65a377da3..7bf750412f6 100644 --- a/src/plugins/autotest/testresultmodel.cpp +++ b/src/plugins/autotest/testresultmodel.cpp @@ -426,6 +426,10 @@ TestResultFilterModel::TestResultFilterModel(TestResultModel *sourceModel, QObje { setSourceModel(sourceModel); enableAllResultTypes(true); + + // instead of using invalidate() from results pane when adding a new result ( QTBUG-103952 ) + connect(sourceModel, &QAbstractItemModel::rowsInserted, + this, &TestResultFilterModel::invalidateFilter); } void TestResultFilterModel::enableAllResultTypes(bool enabled) diff --git a/src/plugins/autotest/testresultspane.cpp b/src/plugins/autotest/testresultspane.cpp index 32dd8425cbe..a75adb215c6 100644 --- a/src/plugins/autotest/testresultspane.cpp +++ b/src/plugins/autotest/testresultspane.cpp @@ -228,7 +228,6 @@ void TestResultsPane::addTestResult(const TestResult &result) m_atEnd = scrollBar ? scrollBar->value() == scrollBar->maximum() : true; m_model->addTestResult(result, m_expandCollapse->isChecked()); - m_filterModel->invalidate(); setIconBadgeNumber(m_model->resultTypeCount(ResultType::Fail) + m_model->resultTypeCount(ResultType::MessageFatal) + m_model->resultTypeCount(ResultType::UnexpectedPass));