From e47832d4830b12e31108425a5ae3f798336efc0a Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 27 Sep 2024 13:28:33 +0200 Subject: [PATCH] QtSupport: Fix leak of ExampleItems Change-Id: Iee9b645a795ba29f8cc3ac4728e7814da27c4f8b Reviewed-by: Eike Ziller --- src/plugins/qtsupport/exampleslistmodel.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/plugins/qtsupport/exampleslistmodel.cpp b/src/plugins/qtsupport/exampleslistmodel.cpp index c9163c62fc6..a599206493a 100644 --- a/src/plugins/qtsupport/exampleslistmodel.cpp +++ b/src/plugins/qtsupport/exampleslistmodel.cpp @@ -427,16 +427,26 @@ void ExamplesViewController::updateExamples() if (categoryOrder.isEmpty()) categoryOrder = result->categoryOrder; } - items = filtered(items, isValidExampleOrDemo(instructionalsModules)); + + static const auto filteredItems = [](const QList &items, + const std::function &filter) { + QList matching; + QList nonMatching; + std::tie(matching, nonMatching) = Utils::partition(items, filter); + qDeleteAll(nonMatching); + return matching; + }; + items = filteredItems(items, isValidExampleOrDemo(instructionalsModules)); if (m_isExamples) { if (m_exampleSetModel->selectedQtSupports(Android::Constants::ANDROID_DEVICE_TYPE)) { - items = Utils::filtered(items, [](ExampleItem *item) { + items = filteredItems(items, [](ExampleItem *item) { return item->tags.contains("android"); }); } else if (m_exampleSetModel->selectedQtSupports(Ios::Constants::IOS_DEVICE_TYPE)) { - items = Utils::filtered(items, - [](ExampleItem *item) { return item->tags.contains("ios"); }); + items = filteredItems(items, [](ExampleItem *item) { + return item->tags.contains("ios"); + }); } }