Title: [118300] branches/chromium/1132/Source/WebCore/loader/cache
Revision
118300
Author
[email protected]
Date
2012-05-23 18:50:38 -0700 (Wed, 23 May 2012)

Log Message

Merge 117376
BUG=128497
Review URL: https://chromiumcodereview.appspot.com/10441007

Modified Paths

Diff

Modified: branches/chromium/1132/Source/WebCore/loader/cache/CachedImage.cpp (118299 => 118300)


--- branches/chromium/1132/Source/WebCore/loader/cache/CachedImage.cpp	2012-05-24 01:47:38 UTC (rev 118299)
+++ branches/chromium/1132/Source/WebCore/loader/cache/CachedImage.cpp	2012-05-24 01:50:38 UTC (rev 118300)
@@ -75,6 +75,7 @@
 
 CachedImage::~CachedImage()
 {
+    clearImage();
 }
 
 void CachedImage::decodedDataDeletionTimerFired(Timer<CachedImage>*)
@@ -302,7 +303,7 @@
 #if ENABLE(SVG)
     m_svgImageCache.clear();
 #endif
-    m_image = 0;
+    clearImage();
     setEncodedSize(0);
 }
 
@@ -328,6 +329,15 @@
     m_image = BitmapImage::create(this);
 }
 
+inline void CachedImage::clearImage()
+{
+    // If our Image has an observer, it's always us so we need to clear the back pointer
+    // before dropping our reference.
+    if (m_image)
+        m_image->setImageObserver(0);
+    m_image.clear();
+}
+
 size_t CachedImage::maximumDecodedImageSize()
 {
     if (!m_loader || m_loader->reachedTerminalState())

Modified: branches/chromium/1132/Source/WebCore/loader/cache/CachedImage.h (118299 => 118300)


--- branches/chromium/1132/Source/WebCore/loader/cache/CachedImage.h	2012-05-24 01:47:38 UTC (rev 118299)
+++ branches/chromium/1132/Source/WebCore/loader/cache/CachedImage.h	2012-05-24 01:50:38 UTC (rev 118300)
@@ -98,6 +98,7 @@
     void clear();
 
     void createImage();
+    void clearImage();
     size_t maximumDecodedImageSize();
     // If not null, changeRect is the changed part of the image.
     void notifyObservers(const IntRect* changeRect = 0);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to