Title: [87693] trunk/Source/WebCore
Revision
87693
Author
[email protected]
Date
2011-05-30 10:21:14 -0700 (Mon, 30 May 2011)

Log Message

2011-05-30  Mikhail Naganov  <[email protected]>

        Reviewed by Adam Barth.

        [Chromium] Fix regression after r87628.
        https://bugs.webkit.org/show_bug.cgi?id=61733

        Having r87628 in place, Chrome reliability bot crashes in
        WebCore::HTMLLinkElement::onloadTimerFired.

        This is because the change makes WebCore::CachedResource::setRequest to
        call checkNotify on request reset.  HTMLLinkElement registers itself as
        CachedResource client via m_cachedSheet, which can happen even if
        m_cachedLinkResource wasn't set.  As a result,
        WebCore::HTMLLinkElement::notifyFinished is got called with unset
        m_cachedLinkResource, which causes a crash in
        HTMLLinkElement::onloadTimerFired

        * html/HTMLLinkElement.cpp:
        (WebCore::HTMLLinkElement::notifyFinished):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (87692 => 87693)


--- trunk/Source/WebCore/ChangeLog	2011-05-30 17:09:48 UTC (rev 87692)
+++ trunk/Source/WebCore/ChangeLog	2011-05-30 17:21:14 UTC (rev 87693)
@@ -1,3 +1,24 @@
+2011-05-30  Mikhail Naganov  <[email protected]>
+
+        Reviewed by Adam Barth.
+
+        [Chromium] Fix regression after r87628.
+        https://bugs.webkit.org/show_bug.cgi?id=61733
+
+        Having r87628 in place, Chrome reliability bot crashes in
+        WebCore::HTMLLinkElement::onloadTimerFired.
+
+        This is because the change makes WebCore::CachedResource::setRequest to
+        call checkNotify on request reset.  HTMLLinkElement registers itself as
+        CachedResource client via m_cachedSheet, which can happen even if
+        m_cachedLinkResource wasn't set.  As a result,
+        WebCore::HTMLLinkElement::notifyFinished is got called with unset
+        m_cachedLinkResource, which causes a crash in
+        HTMLLinkElement::onloadTimerFired
+
+        * html/HTMLLinkElement.cpp:
+        (WebCore::HTMLLinkElement::notifyFinished):
+
 2011-05-30  Jer Noble  <[email protected]>
 
         Reviewed by Darin Adler and Simon Fraser.

Modified: trunk/Source/WebCore/html/HTMLLinkElement.cpp (87692 => 87693)


--- trunk/Source/WebCore/html/HTMLLinkElement.cpp	2011-05-30 17:09:48 UTC (rev 87692)
+++ trunk/Source/WebCore/html/HTMLLinkElement.cpp	2011-05-30 17:21:14 UTC (rev 87693)
@@ -75,7 +75,7 @@
         m_sheet->clearOwnerNode();
 
     if (m_cachedSheet) {
-        m_cachedSheet->removeClient(this);    
+        m_cachedSheet->removeClient(this);
         removePendingSheet();
     }
     
@@ -457,8 +457,9 @@
 
 void HTMLLinkElement::notifyFinished(CachedResource* resource)
 {
-    m_onloadTimer.startOneShot(0);
-    ASSERT(m_cachedLinkResource.get() == resource);
+    ASSERT(m_cachedLinkResource.get() == resource || m_cachedSheet.get() == resource);
+    if (m_cachedLinkResource.get() == resource)
+        m_onloadTimer.startOneShot(0);
 }
 #endif
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to