summaryrefslogtreecommitdiff
path: root/unity-shared
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2014-04-30 18:08:21 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2014-04-30 18:08:21 +0200
commit4b3ec9fbf03a7541d0b1211f5ff73986ba2972e9 (patch)
treed4ef0fc9817d28792c1515f5c388cfef107dd1f6 /unity-shared
parent47be822ab331222346986559ba5ee9bdc6ab3ac3 (diff)
PluginAdapter: make sure we don't try to call an invalid initiate/terminate callback function
Fixes LP: #1221673 (bzr r3791.3.1)
Diffstat (limited to 'unity-shared')
-rw-r--r--unity-shared/PluginAdapter.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/unity-shared/PluginAdapter.cpp b/unity-shared/PluginAdapter.cpp
index ddca3f118..3e3a7bfee 100644
--- a/unity-shared/PluginAdapter.cpp
+++ b/unity-shared/PluginAdapter.cpp
@@ -248,7 +248,8 @@ void MultiActionList::Initiate(std::string const& name, CompOption::Vector const
argument.push_back(arg);
/* Initiate the selected action with the arguments */
- action->initiate()(action, state, argument);
+ if (CompAction::CallBack const& initiate_cb = primary_action_->initiate())
+ initiate_cb(action, 0, argument);
}
void MultiActionList::InitiateAll(CompOption::Vector const& extra_args, int state) const
@@ -291,8 +292,11 @@ void MultiActionList::TerminateAll(CompOption::Vector const& extra_args) const
if (primary_action_)
{
- primary_action_->terminate()(primary_action_, CompAction::StateCancel, argument);
- return;
+ if (CompAction::CallBack const& terminate_cb = primary_action_->terminate())
+ {
+ terminate_cb(primary_action_, CompAction::StateCancel, argument);
+ return;
+ }
}
for (auto const& it : actions_)
@@ -304,7 +308,8 @@ void MultiActionList::TerminateAll(CompOption::Vector const& extra_args) const
CompAction::StateTermEdge |
CompAction::StateTermEdgeDnd))
{
- action->terminate()(action, 0, argument);
+ if (CompAction::CallBack const& terminate_cb = primary_action_->terminate())
+ terminate_cb(action, 0, argument);
}
}
}