Title: [149341] trunk/Source/WTF
Revision
149341
Author
[email protected]
Date
2013-04-29 17:46:14 -0700 (Mon, 29 Apr 2013)

Log Message

It should be an error to use adoptPtr with RefCounted subclasses
https://bugs.webkit.org/show_bug.cgi?id=115389

Reviewed by Benjamin Poulain.

* wtf/PassOwnPtr.h:
(WTF::adoptPtr):
Add COMPILE_ASSERTs.

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (149340 => 149341)


--- trunk/Source/WTF/ChangeLog	2013-04-30 00:34:18 UTC (rev 149340)
+++ trunk/Source/WTF/ChangeLog	2013-04-30 00:46:14 UTC (rev 149341)
@@ -1,3 +1,14 @@
+2013-04-29  Anders Carlsson  <[email protected]>
+
+        It should be an error to use adoptPtr with RefCounted subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=115389
+
+        Reviewed by Benjamin Poulain.
+
+        * wtf/PassOwnPtr.h:
+        (WTF::adoptPtr):
+        Add COMPILE_ASSERTs.
+
 2013-04-29  Patrick Gansterer  <[email protected]>
 
         [WIN] Add workaround for UNUSED_PARAM()

Modified: trunk/Source/WTF/wtf/PassOwnPtr.h (149340 => 149341)


--- trunk/Source/WTF/wtf/PassOwnPtr.h	2013-04-30 00:34:18 UTC (rev 149340)
+++ trunk/Source/WTF/wtf/PassOwnPtr.h	2013-04-30 00:46:14 UTC (rev 149341)
@@ -39,6 +39,9 @@
     template<typename T> class PassOwnPtr;
     template<typename T> PassOwnPtr<T> adoptPtr(T*);
 
+    class RefCountedBase;
+    class ThreadSafeRefCountedBase;
+
     template<typename T> class PassOwnPtr {
     public:
         typedef typename RemovePointer<T>::Type ValueType;
@@ -144,6 +147,9 @@
 
     template<typename T> inline PassOwnPtr<T> adoptPtr(T* ptr)
     {
+        COMPILE_ASSERT(!(IsSubclass<T, RefCountedBase>::value), DoNotUseAdoptPtrWithRefCounted);
+        COMPILE_ASSERT(!(IsSubclass<T, ThreadSafeRefCountedBase>::value), DoNotUseAdoptPtrWithThreadSafeRefCounted);
+
         return PassOwnPtr<T>(ptr);
     }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to