aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEirik Aavitsland <eirik.aavitsland@qt.io>2021-09-06 17:51:37 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-09-07 12:08:21 +0000
commit0437dbfc8811ccd44128ef6b413d933930a98114 (patch)
treefee041d5475e0e737747e391f895c2775f810d93
parent3bb7aa76ca1c70d91e0e0cc7b92a78c69490c6a5 (diff)
Fix memory leak in Qt Quick Controls icon
The implementation of the icon property uses the internal QThemeIconInfo struct from qtbase. That is low level and expects the user to handle memory deallocation, and this was missing. Fixes: QTBUG-93050 Change-Id: Ied6488aa8871c246d3781a3db47f40130dc19bcc Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 47ded88e0c2f489e112b72f62151123db5c04dbe) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/quickcontrols2impl/qquickiconimage.cpp7
-rw-r--r--src/quickcontrols2impl/qquickiconimage_p_p.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/src/quickcontrols2impl/qquickiconimage.cpp b/src/quickcontrols2impl/qquickiconimage.cpp
index 1fc3abfc36..2ca3166b4e 100644
--- a/src/quickcontrols2impl/qquickiconimage.cpp
+++ b/src/quickcontrols2impl/qquickiconimage.cpp
@@ -42,6 +42,12 @@
QT_BEGIN_NAMESPACE
+QQuickIconImagePrivate::~QQuickIconImagePrivate()
+{
+ qDeleteAll(icon.entries);
+ icon.entries.clear();
+}
+
bool QQuickIconImagePrivate::updateDevicePixelRatio(qreal targetDevicePixelRatio)
{
if (isThemeIcon) {
@@ -132,6 +138,7 @@ void QQuickIconImage::setName(const QString &name)
if (d->icon.iconName == name)
return;
+ qDeleteAll(d->icon.entries);
d->icon = QIconLoader::instance()->loadIcon(name);
if (isComponentComplete())
d->updateIcon();
diff --git a/src/quickcontrols2impl/qquickiconimage_p_p.h b/src/quickcontrols2impl/qquickiconimage_p_p.h
index cec5956a3a..22c51c070f 100644
--- a/src/quickcontrols2impl/qquickiconimage_p_p.h
+++ b/src/quickcontrols2impl/qquickiconimage_p_p.h
@@ -59,6 +59,7 @@ class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickIconImagePrivate : public QQuickImag
Q_DECLARE_PUBLIC(QQuickIconImage)
public:
+ ~QQuickIconImagePrivate() override;
void updateIcon();
void updateFillMode();
qreal calculateDevicePixelRatio() const;