task: fix mutex recursion when task awaiting other task ends

This commit is contained in:
rdb 2019-01-09 22:12:02 +01:00
parent e64a342a9f
commit d1845530aa

View File

@ -788,18 +788,17 @@ cleanup_task(AsyncTask *task, bool upon_death, bool clean_exit) {
_manager->remove_task_by_name(task);
if (upon_death && task->set_future_state(clean_exit ? AsyncFuture::FS_finished
if (upon_death) {
_manager->_lock.unlock();
if (task->set_future_state(clean_exit ? AsyncFuture::FS_finished
: AsyncFuture::FS_cancelled)) {
task->notify_done(clean_exit);
}
task->_manager = nullptr;
if (upon_death) {
_manager->_lock.unlock();
task->upon_death(_manager, clean_exit);
_manager->_lock.lock();
}
task->_manager = nullptr;
}
/**