Bug 757375: Concurrency bug fixes (p=jasowill,r=dtomack)
integrate 1128847
CL@1129056
--- a/core/Isolate.cpp
+++ b/core/Isolate.cpp
@@ -784,16 +784,17 @@ throw_terminated_error:
// In order to ensure that the lock is released even though the wait time
// has expired, a wait() for the minimum time must be done here.
result = m_monitor.wait(0);
}
else
{
// continueWait can only be true iff a wait has occurred.
result = true;
+ continueWait = false;
}
}
// the value of interrupt tells us if the isolate was terminated OR
// if a script timeout has fired; script timeouts only happen for the primordial isolate.
interrupted = isolate->isInterrupted() || isolate->getAvmCore()->interruptCheckReason(AvmCore::ScriptTimeout);
// when signaled a thread will return to a blocked