From 72cd6e97ae12b89659cd59788bad08cd2f514eff Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Fri, 12 Jun 2015 10:06:19 -0400 Subject: [PATCH] Bug 1169867 - XMLHttpRequest::SendInternal should not unpin itself when the worker goes away. r=bent, a=abillings --HG-- extra : transplant_source : %28%B3%BD%9D%E2p%F3%BE%94S%CCD%08%8B%07%8A%CC%17%B0%7B --- dom/workers/XMLHttpRequest.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dom/workers/XMLHttpRequest.cpp b/dom/workers/XMLHttpRequest.cpp index 5690af5..d425eac 100644 --- a/dom/workers/XMLHttpRequest.cpp +++ b/dom/workers/XMLHttpRequest.cpp @@ -1829,6 +1829,11 @@ XMLHttpRequest::SendInternal(const nsAString& aStringBody, new SendRunnable(mWorkerPrivate, mProxy, aStringBody, Move(aBody), aClonedObjects, syncLoopTarget, hasUploadListeners); if (!runnable->Dispatch(cx)) { + // Dispatch() may have spun the event loop and we may have already unrooted. + // If so we don't want autoUnpin to try again. + if (!mRooted) { + autoUnpin.Clear(); + } aRv.Throw(NS_ERROR_FAILURE); return; } -- 2.4.3