diff options
author | Moonchild <moonchild@palemoon.org> | 2020-08-28 18:15:27 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-08-30 11:58:58 +0000 |
commit | ae184d09e6229025177e4d537ab13b32d6023a82 (patch) | |
tree | 18fd04800ac4a9eac60a5f995ee7fad29d5c3b98 | |
parent | 868f0755ae5b821d8e0493653d24381e7b65f0e7 (diff) | |
download | UXP-ae184d09e6229025177e4d537ab13b32d6023a82.tar UXP-ae184d09e6229025177e4d537ab13b32d6023a82.tar.gz UXP-ae184d09e6229025177e4d537ab13b32d6023a82.tar.lz UXP-ae184d09e6229025177e4d537ab13b32d6023a82.tar.xz UXP-ae184d09e6229025177e4d537ab13b32d6023a82.zip |
Issue #1587 followup - Improve resilience of AbortSignals.
-rw-r--r-- | dom/abort/AbortSignal.cpp | 9 | ||||
-rw-r--r-- | dom/abort/moz.build | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/dom/abort/AbortSignal.cpp b/dom/abort/AbortSignal.cpp index 20f36d2ab..7ee6c49a9 100644 --- a/dom/abort/AbortSignal.cpp +++ b/dom/abort/AbortSignal.cpp @@ -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(); diff --git a/dom/abort/moz.build b/dom/abort/moz.build index cb48ee15f..eacc9ddc7 100644 --- a/dom/abort/moz.build +++ b/dom/abort/moz.build @@ -14,7 +14,7 @@ EXPORTS.mozilla.dom += [ 'AbortSignal.h', ] -UNIFIED_SOURCES += [ +SOURCES += [ 'AbortController.cpp', 'AbortSignal.cpp', ] |