Title: [108825] trunk/Source/WebCore
Revision
108825
Author
[email protected]
Date
2012-02-24 11:06:34 -0800 (Fri, 24 Feb 2012)

Log Message

Crash in TileCache::revalidateTiles
https://bugs.webkit.org/show_bug.cgi?id=79510
<rdar://problem/10928035>

Reviewed by Sam Weinig.

Handle the tile cache layer's PlatformCALayer going away before the
CALayer itself has been deallocated.

* platform/graphics/ca/mac/TileCache.mm:
(WebCore::TileCache::revalidateTiles):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (108824 => 108825)


--- trunk/Source/WebCore/ChangeLog	2012-02-24 19:06:29 UTC (rev 108824)
+++ trunk/Source/WebCore/ChangeLog	2012-02-24 19:06:34 UTC (rev 108825)
@@ -1,3 +1,17 @@
+2012-02-24  Anders Carlsson  <[email protected]>
+
+        Crash in TileCache::revalidateTiles
+        https://bugs.webkit.org/show_bug.cgi?id=79510
+        <rdar://problem/10928035>
+
+        Reviewed by Sam Weinig.
+
+        Handle the tile cache layer's PlatformCALayer going away before the
+        CALayer itself has been deallocated.
+
+        * platform/graphics/ca/mac/TileCache.mm:
+        (WebCore::TileCache::revalidateTiles):
+
 2012-02-24  Adam Klein  <[email protected]>
 
         Don't notify the inspector of Node insertions initiated by the parser

Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm (108824 => 108825)


--- trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm	2012-02-24 19:06:29 UTC (rev 108824)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileCache.mm	2012-02-24 19:06:34 UTC (rev 108825)
@@ -275,6 +275,12 @@
 
 void TileCache::revalidateTiles()
 {
+    // If the underlying PlatformLayer has been destroyed, but the WebTileCacheLayer hasn't
+    // platformLayer will be null here.
+    PlatformCALayer* platformLayer = PlatformCALayer::platformCALayer(m_tileCacheLayer);
+    if (!platformLayer)
+        return;
+
     IntRect tileCoverageRect = enclosingIntRect(visibleRect());
     if (tileCoverageRect.isEmpty())
         return;
@@ -343,7 +349,6 @@
     if (!didCreateNewTiles)
         return;
 
-    PlatformCALayer* platformLayer = PlatformCALayer::platformCALayer(m_tileCacheLayer);
     platformLayer->owner()->platformCALayerDidCreateTiles();
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to