mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 18:27:35 +00:00
LibThreading: Fix BackgroundAction result use-after-free
We need to move the result out of the BackgroundAction object before posting the completion callback as there is a chance the BackgroundAction instance gets freed before the event loop runs our callback. Fixes #7641
This commit is contained in:
parent
8aafbd917a
commit
b2e6088bff
1 changed files with 2 additions and 2 deletions
|
@ -66,8 +66,8 @@ private:
|
|||
enqueue_work([this] {
|
||||
m_result = m_action(*this);
|
||||
if (m_on_complete) {
|
||||
Core::EventLoop::current().post_event(*this, make<Core::DeferredInvocationEvent>([this](auto&) {
|
||||
m_on_complete(m_result.release_value());
|
||||
Core::EventLoop::current().post_event(*this, make<Core::DeferredInvocationEvent>([this, result = m_result.release_value()](auto&) {
|
||||
m_on_complete(result);
|
||||
this->remove_from_parent();
|
||||
}));
|
||||
Core::EventLoop::wake();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue