Stop leaking all CACFContexts
authoraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 21 May 2010 02:14:10 +0000 (02:14 +0000)
committeraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 21 May 2010 02:14:10 +0000 (02:14 +0000)
Fixes <http://webkit.org/b/39466> <rdar://problem/8007141>.

Reviewed by Simon Fraser.

* platform/graphics/win/WKCACFContextFlusher.cpp:
(WebCore::WKCACFContextFlusher::addContext): Only retain the context
when we first add it to the m_contexts set. Otherwise we'll retain the
same context multiple times, causing it to leak.

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

WebCore/ChangeLog
WebCore/platform/graphics/win/WKCACFContextFlusher.cpp

index 8606866e458db443d4e3484e012a84c7a86ff97e..4dd2df34e12cbfabd776bbb6688c237476008ef6 100644 (file)
@@ -1,3 +1,16 @@
+2010-05-20  Adam Roben  <aroben@apple.com>
+
+        Stop leaking all CACFContexts
+
+        Fixes <http://webkit.org/b/39466> <rdar://problem/8007141>.
+
+        Reviewed by Simon Fraser.
+
+        * platform/graphics/win/WKCACFContextFlusher.cpp:
+        (WebCore::WKCACFContextFlusher::addContext): Only retain the context
+        when we first add it to the m_contexts set. Otherwise we'll retain the
+        same context multiple times, causing it to leak.
+
 2010-05-20  Young Han Lee  <joybro@company100.net>
 
         Reviewed by Darin Adler.
index e97b5305816fddcf9324d620d1d09bb9d7a82d6c..1685a309e30fd87b8d27b19a0f057ed98d6d3ab4 100644 (file)
@@ -52,8 +52,8 @@ void WKCACFContextFlusher::addContext(CACFContextRef context)
 {
     ASSERT(context);
 
-    m_contexts.add(context);
-    CFRetain(context);
+    if (m_contexts.add(context).second)
+        CFRetain(context);
 }
 
 void WKCACFContextFlusher::removeContext(CACFContextRef context)