From 22d8539016c156a9970339e9cd810d6f921784a1 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 17 Jul 2023 17:40:31 +0200 Subject: [PATCH] tst_QSortFilterProxyModel: fix mem-leaks II: sortStable() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Like in 9f8449a054a165ae560c91d3e31409bc293df80d, for doubleProxySelectionSetSourceModel(), the sortStable() test also leaked _everything_. Fix in the same way, by allocating model and view on the stack intead of the heap. With this patch, tst_QSortFilterProxyModel is now asan-, but not ubsan-clean (and, because of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110704, asan still reports a leak in cp-demangle.c, which should be™ gone once we fix the rest of QTBUG-99563). Task-number: QTBUG-115264 Change-Id: Ic0e833d7336435e324457f9d9667ee8573a7dafc Reviewed-by: Ivan Solovev (cherry picked from commit 65647d54b9fddb0b0e3238024d79e12e4bf53295) Reviewed-by: Qt Cherry-pick Bot --- .../tst_qsortfilterproxymodel.cpp | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp index 08110da883d..94ae7832344 100644 --- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp +++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp @@ -2806,7 +2806,7 @@ void tst_QSortFilterProxyModel::sortColumnTracking2() void tst_QSortFilterProxyModel::sortStable() { - QStandardItemModel* model = new QStandardItemModel(5, 2); + QStandardItemModel model(5, 2); for (int r = 0; r < 5; r++) { const QString prefix = QLatin1String("Row:") + QString::number(r) + QLatin1String(", Column:"); for (int c = 0; c < 2; c++) { @@ -2815,24 +2815,24 @@ void tst_QSortFilterProxyModel::sortStable() QStandardItem* child = new QStandardItem(QLatin1String("Item ") + QString::number(i)); item->appendRow( child ); } - model->setItem(r, c, item); + model.setItem(r, c, item); } } - model->setHorizontalHeaderItem( 0, new QStandardItem( "Name" )); - model->setHorizontalHeaderItem( 1, new QStandardItem( "Value" )); + model.setHorizontalHeaderItem( 0, new QStandardItem( "Name" )); + model.setHorizontalHeaderItem( 1, new QStandardItem( "Value" )); - QSortFilterProxyModel *filterModel = new QSortFilterProxyModel(model); - filterModel->setSourceModel(model); + QSortFilterProxyModel *filterModel = new QSortFilterProxyModel(&model); + filterModel->setSourceModel(&model); - QTreeView *view = new QTreeView; - view->setModel(filterModel); + QTreeView view; + view.setModel(filterModel); QModelIndex firstRoot = filterModel->index(0,0); - view->expand(firstRoot); - view->setSortingEnabled(true); + view.expand(firstRoot); + view.setSortingEnabled(true); - view->model()->sort(1, Qt::DescendingOrder); + view.model()->sort(1, Qt::DescendingOrder); QVariant lastItemData =filterModel->index(2,0, firstRoot).data(); - view->model()->sort(1, Qt::DescendingOrder); + view.model()->sort(1, Qt::DescendingOrder); QCOMPARE(lastItemData, filterModel->index(2,0, firstRoot).data()); }