summaryrefslogtreecommitdiffstats
path: root/src/plugins/platformthemes
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2020-10-05 10:33:21 +0200
committerGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2020-10-06 07:37:28 +0000
commit45a0c68c8c0b373152f4aec511bc150f431ad9e3 (patch)
tree11436a8870d666b1c41d2466ec24d0b247a2a505 /src/plugins/platformthemes
parent227fa93c27d7c3a3e1749749ee2b9eafdb397a7f (diff)
xdgdesktopportal: properly fix a dangling pointer
The previous fix didn't actually work, as it kept a reference into a container which could have been muted by the time the reference was going to be used. Use an index instead. Amends 32c09ea5b0f529418eece63de5c3b2c206f62896. Change-Id: Ib855b4a663c281467e46536b98a0ce2b961f19ee Pick-to: 5.15 Task-number: QTBUG-87143 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/plugins/platformthemes')
-rw-r--r--src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
index ae2532e69e..cf3c2c9e9b 100644
--- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
+++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
@@ -210,7 +210,7 @@ void QXdgDesktopPortalFileDialog::openPortal()
qDBusRegisterMetaType<FilterList>();
FilterList filterList;
- Filter* selectedFilter = nullptr;
+ auto selectedFilterIndex = filterList.size() - 1;
d->userVisibleToNameFilter.clear();
@@ -236,7 +236,7 @@ void QXdgDesktopPortalFileDialog::openPortal()
filterList << filter;
if (!d->selectedMimeTypeFilter.isEmpty() && d->selectedMimeTypeFilter == mimeTypefilter)
- selectedFilter = &filterList.last();
+ selectedFilterIndex = filterList.size() - 1;
}
} else if (!d->nameFilters.isEmpty()) {
for (const QString &nameFilter : d->nameFilters) {
@@ -265,7 +265,7 @@ void QXdgDesktopPortalFileDialog::openPortal()
d->userVisibleToNameFilter.insert(userVisibleName, nameFilter);
if (!d->selectedNameFilter.isEmpty() && d->selectedNameFilter == nameFilter)
- selectedFilter = &filterList.last();
+ selectedFilterIndex = filterList.size() - 1;
}
}
}
@@ -273,9 +273,8 @@ void QXdgDesktopPortalFileDialog::openPortal()
if (!filterList.isEmpty())
options.insert(QLatin1String("filters"), QVariant::fromValue(filterList));
- if (selectedFilter) {
- options.insert(QLatin1String("current_filter"), QVariant::fromValue(*selectedFilter));
- }
+ if (selectedFilterIndex != -1)
+ options.insert(QLatin1String("current_filter"), QVariant::fromValue(filterList[selectedFilterIndex]));
options.insert(QLatin1String("handle_token"), QStringLiteral("qt%1").arg(QRandomGenerator::global()->generate()));