diff options
author | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2021-09-06 17:51:37 +0200 |
---|---|---|
committer | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2021-09-07 12:23:12 +0000 |
commit | 2812a7bf5699d0e1fe6c2c9dae2915acfd3da791 (patch) | |
tree | 4ad6b01c2997a4f5be9f7146f9db5728496eac53 | |
parent | 05522a30193a3090dd7cae26b36d675ae1f18e08 (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.cpp | 7 | ||||
-rw-r--r-- | src/quickcontrols2/qquickiconimage_p_p.h | 1 |
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; |