mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-26 01:20:25 +00:00
LibThreading: Only run on_error callback when action wasn't canceled
This mirrors the same UAF protection for event loops used by the on_complete callback.
This commit is contained in:
parent
7704d89496
commit
04b44a827a
Notes:
sideshowbarker
2024-07-17 04:34:25 +09:00
Author: https://github.com/kleinesfilmroellchen Commit: https://github.com/SerenityOS/serenity/commit/04b44a827a Pull-request: https://github.com/SerenityOS/serenity/pull/18774 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/LucasChollet
1 changed files with 3 additions and 1 deletions
|
@ -100,13 +100,15 @@ private:
|
|||
error = result.release_error();
|
||||
|
||||
m_promise->cancel(Error::from_errno(ECANCELED));
|
||||
if (m_on_error) {
|
||||
if (!m_canceled && m_on_error) {
|
||||
callback_scheduled = true;
|
||||
origin_event_loop->deferred_invoke([this, error = move(error)]() mutable {
|
||||
m_on_error(move(error));
|
||||
remove_from_parent();
|
||||
});
|
||||
origin_event_loop->wake();
|
||||
} else if (m_on_error) {
|
||||
m_on_error(move(error));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue