summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2020-08-28 18:15:27 +0000
committerMoonchild <moonchild@palemoon.org>2020-08-30 11:58:58 +0000
commitae184d09e6229025177e4d537ab13b32d6023a82 (patch)
tree18fd04800ac4a9eac60a5f995ee7fad29d5c3b98
parent868f0755ae5b821d8e0493653d24381e7b65f0e7 (diff)
downloadUXP-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.cpp9
-rw-r--r--dom/abort/moz.build2
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',
]