☠☠ backed out by 8c38fdf34cef ☠ ☠ | |
author | Andrea Marchesini <amarchesini@mozilla.com> |
Fri, 20 Jan 2017 08:26:14 +0100 | |
changeset 330255 | 25c65ac95fc5191ded02ade757f0a3da819266b0 |
parent 330254 | 4ec5bc4fff15bf293a7118065df335847d0e2f96 |
child 330256 | 7f69f35b4f62db4d3c659103c817c7e9f814d108 |
push id | 85915 |
push user | amarchesini@mozilla.com |
push date | Fri, 20 Jan 2017 07:26:28 +0000 |
treeherder | mozilla-inbound@25c65ac95fc5 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | bkelly |
bugs | 1331854 |
milestone | 53.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/file/ipc/Blob.cpp +++ b/dom/file/ipc/Blob.cpp @@ -1010,22 +1010,30 @@ void RemoteInputStream::ReallyBlockAndWaitForStream() { MOZ_ASSERT(!IsOnOwningThread()); DebugOnly<bool> waited; { MonitorAutoLock lock(mMonitor); - waited = !mStream; - - while (!mStream) { - mMonitor.Wait(); + } + + nsIThread* currentThread = NS_GetCurrentThread(); + MOZ_ASSERT(currentThread); + + while (true) { + { + MonitorAutoLock lock(mMonitor); + if (mStream) { + break; + } } + MOZ_ALWAYS_TRUE(NS_ProcessNextEvent(currentThread)); } MOZ_ASSERT(mStream); #ifdef DEBUG if (waited && mWeakSeekableStream) { int64_t position; if (NS_SUCCEEDED(mWeakSeekableStream->Tell(&position))) {