diff options
author | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2021-09-06 17:51:37 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-09-07 12:08:21 +0000 |
commit | 0437dbfc8811ccd44128ef6b413d933930a98114 (patch) | |
tree | fee041d5475e0e737747e391f895c2775f810d93 /src | |
parent | 3bb7aa76ca1c70d91e0e0cc7b92a78c69490c6a5 (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>
Diffstat (limited to 'src')
-rw-r--r-- | src/quickcontrols2impl/qquickiconimage.cpp | 7 | ||||
-rw-r--r-- | src/quickcontrols2impl/qquickiconimage_p_p.h | 1 |
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; |