зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1856089 - Harden RequestResolver::ResolveOrReject against a race with WorkerRef::Notify. r=dom-storage-reviewers,asuth
Differential Revision: https://phabricator.services.mozilla.com/D190030
This commit is contained in:
Родитель
f359a8f7c6
Коммит
109482b93c
|
@ -427,13 +427,19 @@ void RequestResolver::ResolveOrReject() {
|
||||||
} else {
|
} else {
|
||||||
MOZ_ASSERT(mProxy);
|
MOZ_ASSERT(mProxy);
|
||||||
|
|
||||||
promise = mProxy->WorkerPromise();
|
// The worker ref might have been notified already before we are run.
|
||||||
|
MutexAutoLock lock(mProxy->Lock());
|
||||||
|
if (!mProxy->CleanedUp()) {
|
||||||
|
promise = mProxy->WorkerPromise();
|
||||||
|
|
||||||
// Only clean up for worker case.
|
// Only clean up for worker case.
|
||||||
autoCleanup.emplace(mProxy);
|
autoCleanup.emplace(mProxy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MOZ_ASSERT(promise);
|
if (!promise) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (mType == Type::Estimate) {
|
if (mType == Type::Estimate) {
|
||||||
if (NS_SUCCEEDED(mResultCode)) {
|
if (NS_SUCCEEDED(mResultCode)) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче