diff options
author | Shawn Rutledge <shawn.rutledge@theqtcompany.com> | 2015-08-20 17:12:14 +0200 |
---|---|---|
committer | Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> | 2015-09-02 06:34:57 +0000 |
commit | b39c9011db62f154d255edeba9242463ad58e570 (patch) | |
tree | 73c7fbffba052eac548eb954d1d7dad1ed843ce1 /src/platformsupport | |
parent | 21e1354d42d1bb3967dedb62facc684a8ab702ce (diff) |
QDBusPlatformMenu and Item: remove stored pointers when deleted
Prevents memory leak and later access of dangling pointers.
Change-Id: I6a1da1ec191ad5fa880c5884c37fd5582215e825
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/platformsupport')
-rw-r--r-- | src/platformsupport/dbusmenu/qdbusplatformmenu.cpp | 6 | ||||
-rw-r--r-- | src/platformsupport/dbusmenu/qdbusplatformmenu_p.h | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/platformsupport/dbusmenu/qdbusplatformmenu.cpp b/src/platformsupport/dbusmenu/qdbusplatformmenu.cpp index a64e107e71..1dd2b462ed 100644 --- a/src/platformsupport/dbusmenu/qdbusplatformmenu.cpp +++ b/src/platformsupport/dbusmenu/qdbusplatformmenu.cpp @@ -59,6 +59,11 @@ QDBusPlatformMenuItem::QDBusPlatformMenuItem(quintptr tag) menuItemsByID.insert(m_dbusID, this); } +QDBusPlatformMenuItem::~QDBusPlatformMenuItem() +{ + menuItemsByID.remove(m_dbusID); +} + void QDBusPlatformMenuItem::setTag(quintptr tag) { m_tag = tag; @@ -155,6 +160,7 @@ QDBusPlatformMenu::QDBusPlatformMenu(quintptr tag) QDBusPlatformMenu::~QDBusPlatformMenu() { menusByID.remove(m_dbusID); + m_topLevelMenus.removeOne(this); } void QDBusPlatformMenu::insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before) diff --git a/src/platformsupport/dbusmenu/qdbusplatformmenu_p.h b/src/platformsupport/dbusmenu/qdbusplatformmenu_p.h index 16bb4f195c..fdad7990e9 100644 --- a/src/platformsupport/dbusmenu/qdbusplatformmenu_p.h +++ b/src/platformsupport/dbusmenu/qdbusplatformmenu_p.h @@ -57,6 +57,7 @@ class QDBusPlatformMenuItem : public QPlatformMenuItem public: QDBusPlatformMenuItem(quintptr tag = 0LL); + ~QDBusPlatformMenuItem(); quintptr tag()const Q_DECL_OVERRIDE { return m_tag; } void setTag(quintptr tag) Q_DECL_OVERRIDE; |