Leaking ClipRects
authorsimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Jun 2012 05:01:57 +0000 (05:01 +0000)
committersimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Jun 2012 05:01:57 +0000 (05:01 +0000)
https://bugs.webkit.org/show_bug.cgi?id=88282

Reviewed by Dan Bernstein.

In r118562 I made the ClipRectsCache use RefPtr<ClipRects>. However, ClipRects
was initialized with m_refCnt=0, not 1 as adoptRef() and friends expect. Also,
there was a manual ref() in RenderLayer::updateClipRects() which this patch removes.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateClipRects):
* rendering/RenderLayer.h:
(WebCore::ClipRects::ClipRects):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@119458 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderLayer.cpp
Source/WebCore/rendering/RenderLayer.h

index 738537d..f28a8cd 100644 (file)
@@ -1,3 +1,19 @@
+2012-06-04  Simon Fraser  <simon.fraser@apple.com>
+
+        Leaking ClipRects
+        https://bugs.webkit.org/show_bug.cgi?id=88282
+
+        Reviewed by Dan Bernstein.
+
+        In r118562 I made the ClipRectsCache use RefPtr<ClipRects>. However, ClipRects
+        was initialized with m_refCnt=0, not 1 as adoptRef() and friends expect. Also,
+        there was a manual ref() in RenderLayer::updateClipRects() which this patch removes.
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::updateClipRects):
+        * rendering/RenderLayer.h:
+        (WebCore::ClipRects::ClipRects):
+
 2012-06-04  Emil A Eklund  <eae@chromium.org> and Levi Weintraub  <leviw@chromium.org>
 
         Add missing FractionalLayoutUnit += operator and move LineWidth to use all floats
index e0b56e7..05d9ba5 100644 (file)
@@ -3794,7 +3794,6 @@ void RenderLayer::updateClipRects(const RenderLayer* rootLayer, RenderRegion* re
     else
         m_clipRectsCache->m_clipRects[clipRectsType] = ClipRects::create(clipRects);
 
-    m_clipRectsCache->m_clipRects[clipRectsType]->ref();
 #ifndef NDEBUG
     m_clipRectsCache->m_clipRectsRoot[clipRectsType] = rootLayer;
 #endif
index ad23af7..4852ff0 100644 (file)
@@ -140,7 +140,7 @@ public:
     }
 
     ClipRects()
-        : m_refCnt(0)
+        : m_refCnt(1)
         , m_fixed(false)
     {
     }
@@ -194,7 +194,7 @@ private:
         : m_overflowClipRect(r)
         , m_fixedClipRect(r)
         , m_posClipRect(r)
-        , m_refCnt(0)
+        , m_refCnt(1)
         , m_fixed(false)
     {
     }
@@ -203,7 +203,7 @@ private:
         : m_overflowClipRect(other.overflowClipRect())
         , m_fixedClipRect(other.fixedClipRect())
         , m_posClipRect(other.posClipRect())
-        , m_refCnt(0)
+        , m_refCnt(1)
         , m_fixed(other.fixed())
     {
     }