Bug 1435634 - Stop refresh driver's timer and bail out if either the prescontext or the presshell was destroyed in resize event callbacks. r?tnikkel
MozReview-Commit-ID: 5Nn66g71SxG
--- a/layout/base/nsRefreshDriver.cpp
+++ b/layout/base/nsRefreshDriver.cpp
@@ -1861,17 +1861,18 @@ nsRefreshDriver::Tick(int64_t aNowEpoch,
}
// Resize events should be fired before layout flushes or
// calling animation frame callbacks.
AutoTArray<nsIPresShell*, 16> observers;
observers.AppendElements(mResizeEventFlushObservers);
for (uint32_t i = observers.Length(); i; --i) {
if (!mPresContext || !mPresContext->GetPresShell()) {
- break;
+ StopTimer();
+ return;
}
// Make sure to not process observers which might have been removed
// during previous iterations.
nsIPresShell* shell = observers[i - 1];
if (!mResizeEventFlushObservers.Contains(shell)) {
continue;
}
mResizeEventFlushObservers.RemoveElement(shell);