Title: [120663] trunk/Source/_javascript_Core
Revision
120663
Author
[email protected]
Date
2012-06-18 20:32:30 -0700 (Mon, 18 Jun 2012)

Log Message

[JSC] In JSGlobalData.cpp, enableAssembler() sometimes leaks two CF objects
https://bugs.webkit.org/show_bug.cgi?id=89415

Reviewed by Sam Weinig.

In the case where canUseJIT was a non-NULL CFBooleanRef,
enableAssembler() would leak both canUseJITKey and canUseJIT by
returning before calling CFRelease. Fix this by using RetainPtr.

* runtime/JSGlobalData.cpp:
(JSC::enableAssembler):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (120662 => 120663)


--- trunk/Source/_javascript_Core/ChangeLog	2012-06-19 03:20:53 UTC (rev 120662)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-06-19 03:32:30 UTC (rev 120663)
@@ -1,3 +1,17 @@
+2012-06-18  Andy Estes  <[email protected]>
+
+        [JSC] In JSGlobalData.cpp, enableAssembler() sometimes leaks two CF objects
+        https://bugs.webkit.org/show_bug.cgi?id=89415
+
+        Reviewed by Sam Weinig.
+
+        In the case where canUseJIT was a non-NULL CFBooleanRef,
+        enableAssembler() would leak both canUseJITKey and canUseJIT by
+        returning before calling CFRelease. Fix this by using RetainPtr.
+
+        * runtime/JSGlobalData.cpp:
+        (JSC::enableAssembler):
+
 2012-06-17  Geoffrey Garen  <[email protected]>
 
         GC copy phase spends needless cycles zero-filling blocks

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp (120662 => 120663)


--- trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp	2012-06-19 03:20:53 UTC (rev 120662)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp	2012-06-19 03:32:30 UTC (rev 120663)
@@ -54,6 +54,7 @@
 #include "RegExpObject.h"
 #include "StrictEvalActivation.h"
 #include "StrongInlines.h"
+#include <wtf/RetainPtr.h>
 #include <wtf/Threading.h>
 #include <wtf/WTFThreadData.h>
 
@@ -100,13 +101,10 @@
         return false;
 
 #if USE(CF)
-    CFStringRef canUseJITKey = CFStringCreateWithCString(0 , "_javascript_CoreUseJIT", kCFStringEncodingMacRoman);
-    CFBooleanRef canUseJIT = (CFBooleanRef)CFPreferencesCopyAppValue(canUseJITKey, kCFPreferencesCurrentApplication);
-    if (canUseJIT) {
+    RetainPtr<CFStringRef> canUseJITKey(AdoptCF, CFStringCreateWithCString(0 , "_javascript_CoreUseJIT", kCFStringEncodingMacRoman));
+    RetainPtr<CFBooleanRef> canUseJIT(AdoptCF, (CFBooleanRef)CFPreferencesCopyAppValue(canUseJITKey.get(), kCFPreferencesCurrentApplication));
+    if (canUseJIT)
         return kCFBooleanTrue == canUseJIT;
-        CFRelease(canUseJIT);
-    }
-    CFRelease(canUseJITKey);
 #endif
 
 #if USE(CF) || OS(UNIX)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to