https://bugs.webkit.org/show_bug.cgi?id=133370
<rdar://problem/
17061361>
Reviewed by Anders Carlsson.
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::didUpdate):
Copy the set of refresh monitors so that we don't try to mutate the list we're iterating,
and don't try to fire refresh monitors that were removed in a previous iteration of the loop.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@169456
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2014-05-29 Timothy Horton <timothy_horton@apple.com>
+
+ Crash loading skydrive.com (assertion under RemoteLayerTreeDisplayRefreshMonitor)
+ https://bugs.webkit.org/show_bug.cgi?id=133370
+ <rdar://problem/17061361>
+
+ Reviewed by Anders Carlsson.
+
+ * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
+ (WebKit::RemoteLayerTreeDrawingArea::didUpdate):
+ Copy the set of refresh monitors so that we don't try to mutate the list we're iterating,
+ and don't try to fire refresh monitors that were removed in a previous iteration of the loop.
+
2014-05-29 Timothy Horton <timothy_horton@apple.com>
REGRESSION (iOS WebKit2): Find-in-Page doesn't work in subframes
[CATransaction begin];
[CATransaction commit];
+ Vector<RemoteLayerTreeDisplayRefreshMonitor*> monitors;
+ monitors.reserveCapacity(m_displayRefreshMonitors.size());
for (auto& monitor : m_displayRefreshMonitors)
- monitor->didUpdateLayers();
+ monitors.append(monitor);
+ for (auto& monitor : monitors) {
+ // The monitor might have been removed by an earlier didUpdateLayers callback.
+ if (m_displayRefreshMonitors.contains(monitor))
+ monitor->didUpdateLayers();
+ }
}
void RemoteLayerTreeDrawingArea::mainFrameContentSizeChanged(const IntSize& contentsSize)