diff --git a/dom/workers/XMLHttpRequest.cpp b/dom/workers/XMLHttpRequest.cpp index ff316b88dfa..60df050bcd5 100644 --- a/dom/workers/XMLHttpRequest.cpp +++ b/dom/workers/XMLHttpRequest.cpp @@ -1279,6 +1279,10 @@ EventRunnable::WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) mProxy->mSeenUploadLoadStart = false; } else { + if (!mProxy->mSeenLoadStart) { + // We've already dispatched premature abort events. + return true; + } mProxy->mSeenLoadStart = false; } } @@ -2404,7 +2408,9 @@ XMLHttpRequest::UpdateState(const StateData& aStateData, bool aUseCachedArrayBufferResponse) { if (aUseCachedArrayBufferResponse) { - MOZ_ASSERT(JS_IsArrayBufferObject(mStateData.mResponse.toObjectOrNull())); + MOZ_ASSERT(mStateData.mResponse.isObject() && + JS_IsArrayBufferObject(&mStateData.mResponse.toObject())); + JS::Rooted response(mWorkerPrivate->GetJSContext(), mStateData.mResponse); mStateData = aStateData;