summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qtoolbutton.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@digia.com>2014-02-05 11:48:51 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-12 01:41:15 +0100
commit4d6cb199b828256cb78ff986f2c1a508b339d2ee (patch)
treef1b19644a7b81b33d2ee61be02b8db0cfecb9b92 /src/widgets/widgets/qtoolbutton.cpp
parentbe51772d023161c81978b3a63b6379d4ebb8013f (diff)
Make QToolButtonPrivate::popupTimerDone() more robust
Avoid dereferencing the q-pointer if the button has been destructed meanwhile popup was open. Task-number: QTBUG-26956 Change-Id: I68190e9fe84c669229ae0ce4d573ee7a02a8a141 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Diffstat (limited to 'src/widgets/widgets/qtoolbutton.cpp')
-rw-r--r--src/widgets/widgets/qtoolbutton.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp
index f08689cb9b..497bc52109 100644
--- a/src/widgets/widgets/qtoolbutton.cpp
+++ b/src/widgets/widgets/qtoolbutton.cpp
@@ -778,15 +778,16 @@ void QToolButtonPrivate::popupTimerDone()
actualMenu->d_func()->causedPopup.action = defaultAction;
actionsCopy = q->actions(); //(the list of action may be modified in slots)
actualMenu->exec(p);
+
+ if (!that)
+ return;
+
QObject::disconnect(actualMenu, SIGNAL(aboutToHide()), q, SLOT(_q_updateButtonDown()));
if (mustDeleteActualMenu)
delete actualMenu;
else
QObject::disconnect(actualMenu, SIGNAL(triggered(QAction*)), q, SLOT(_q_menuTriggered(QAction*)));
- if (!that)
- return;
-
actionsCopy.clear();
if (repeat)