diff options
author | Dmitry Shachnev <mitya57@gmail.com> | 2016-09-07 17:19:19 +0300 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2016-09-15 14:17:14 +0000 |
commit | 5ca9631d3a0717afb066471ed5eb3b3ed9a9c08a (patch) | |
tree | c3660afb449127c3048799d5630f4f7babfa196e | |
parent | 63656dbed7bd2b3e35fd8f74a7fb65773baecdd5 (diff) |
dbusmenu: Don’t leave dangling pointers when menus are destroyed
Delete references from menu to its containing item, and vice versa.
Fixes https://launchpad.net/bugs/1620937
Task-number: QTBUG-55966
Change-Id: I58f0f0a90184bee4b0466c28d91c670a34fa65a5
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-rw-r--r-- | src/platformsupport/dbusmenu/qdbusplatformmenu.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/platformsupport/dbusmenu/qdbusplatformmenu.cpp b/src/platformsupport/dbusmenu/qdbusplatformmenu.cpp index 5c259d5b67..a5ee52e73c 100644 --- a/src/platformsupport/dbusmenu/qdbusplatformmenu.cpp +++ b/src/platformsupport/dbusmenu/qdbusplatformmenu.cpp @@ -60,6 +60,8 @@ QDBusPlatformMenuItem::QDBusPlatformMenuItem(quintptr tag) QDBusPlatformMenuItem::~QDBusPlatformMenuItem() { menuItemsByID.remove(m_dbusID); + if (m_subMenu) + static_cast<QDBusPlatformMenu *>(m_subMenu)->setContainingMenuItem(Q_NULLPTR); } void QDBusPlatformMenuItem::setTag(quintptr tag) @@ -162,6 +164,8 @@ QDBusPlatformMenu::QDBusPlatformMenu(quintptr tag) QDBusPlatformMenu::~QDBusPlatformMenu() { + if (m_containingMenuItem) + m_containingMenuItem->setMenu(Q_NULLPTR); } void QDBusPlatformMenu::insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before) |