aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEirik Aavitsland <eirik.aavitsland@qt.io>2021-09-06 17:51:37 +0200
committerEirik Aavitsland <eirik.aavitsland@qt.io>2021-09-07 12:23:12 +0000
commit2812a7bf5699d0e1fe6c2c9dae2915acfd3da791 (patch)
tree4ad6b01c2997a4f5be9f7146f9db5728496eac53
parent05522a30193a3090dd7cae26b36d675ae1f18e08 (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. Change-Id: Ied6488aa8871c246d3781a3db47f40130dc19bcc Fixes: QTBUG-93050 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit e13ba851847f23de49a6e7cf7d87f67bc74cedbc)
-rw-r--r--src/quickcontrols2/qquickiconimage.cpp7
-rw-r--r--src/quickcontrols2/qquickiconimage_p_p.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/src/quickcontrols2/qquickiconimage.cpp b/src/quickcontrols2/qquickiconimage.cpp
index 82dddd5f..4cd583fa 100644
--- a/src/quickcontrols2/qquickiconimage.cpp
+++ b/src/quickcontrols2/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/quickcontrols2/qquickiconimage_p_p.h b/src/quickcontrols2/qquickiconimage_p_p.h
index 156297ff..d07fa355 100644
--- a/src/quickcontrols2/qquickiconimage_p_p.h
+++ b/src/quickcontrols2/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;