diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-04-30 18:08:21 +0200 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-04-30 18:08:21 +0200 |
| commit | 4b3ec9fbf03a7541d0b1211f5ff73986ba2972e9 (patch) | |
| tree | d4ef0fc9817d28792c1515f5c388cfef107dd1f6 /unity-shared | |
| parent | 47be822ab331222346986559ba5ee9bdc6ab3ac3 (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.cpp | 13 |
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); } } } |
