Improve resilience of AbortSignals.

master
Fedor 2020-09-09 17:29:54 +03:00
parent e17e4b71c2
commit 1d7081d1e4
2 changed files with 9 additions and 2 deletions

View File

@ -56,9 +56,16 @@ AbortSignal::Aborted() const
void
AbortSignal::Abort()
{
MOZ_ASSERT(!mAborted);
// Re-entrancy guard
if (mAborted) {
return;
}
mAborted = true;
// We might be deleted as a result of aborting a follower, so ensure we
// stay alive until all followers have been aborted.
RefPtr<AbortSignal> pinThis = this;
// Let's inform the followers.
for (uint32_t i = 0; i < mFollowers.Length(); ++i) {
mFollowers[i]->Aborted();

View File

@ -14,7 +14,7 @@ EXPORTS.mozilla.dom += [
'AbortSignal.h',
]
UNIFIED_SOURCES += [
SOURCES += [
'AbortController.cpp',
'AbortSignal.cpp',
]