Title: [157673] trunk
- Revision
- 157673
- Author
- [email protected]
- Date
- 2013-10-19 12:55:32 -0700 (Sat, 19 Oct 2013)
Log Message
RefPtr::releaseNonNull() incorrectly increments the refcount.
<https://webkit.org/b/123063>
Source/WTF:
Make releaseNonNull() use adoptRef(T&), mirroring release().
Reviewed by Anders Carlsson.
Tools:
Add an API test to verify that no extra refs are added when calling
RefPtr::releaseNonNull().
Reviewed by Anders Carlsson.
Modified Paths
Diff
Modified: trunk/Source/WTF/ChangeLog (157672 => 157673)
--- trunk/Source/WTF/ChangeLog 2013-10-19 16:48:42 UTC (rev 157672)
+++ trunk/Source/WTF/ChangeLog 2013-10-19 19:55:32 UTC (rev 157673)
@@ -1,3 +1,12 @@
+2013-10-19 Andreas Kling <[email protected]>
+
+ RefPtr::releaseNonNull() incorrectly increments the refcount.
+ <https://webkit.org/b/123063>
+
+ Make releaseNonNull() use adoptRef(T&), mirroring release().
+
+ Reviewed by Anders Carlsson.
+
2013-10-18 Andreas Kling <[email protected]>
Start passing RenderStyle around with PassRef.
Modified: trunk/Source/WTF/wtf/RefPtr.h (157672 => 157673)
--- trunk/Source/WTF/wtf/RefPtr.h 2013-10-19 16:48:42 UTC (rev 157672)
+++ trunk/Source/WTF/wtf/RefPtr.h 2013-10-19 19:55:32 UTC (rev 157673)
@@ -58,7 +58,7 @@
void clear();
PassRefPtr<T> release() { PassRefPtr<T> tmp = adoptRef(m_ptr); m_ptr = nullptr; return tmp; }
- PassRef<T> releaseNonNull() { ASSERT(m_ptr); PassRef<T> tmp(*m_ptr); m_ptr = nullptr; return tmp; }
+ PassRef<T> releaseNonNull() { ASSERT(m_ptr); PassRef<T> tmp = adoptRef(*m_ptr); m_ptr = nullptr; return tmp; }
T& operator*() const { return *m_ptr; }
ALWAYS_INLINE T* operator->() const { return m_ptr; }
Modified: trunk/Tools/ChangeLog (157672 => 157673)
--- trunk/Tools/ChangeLog 2013-10-19 16:48:42 UTC (rev 157672)
+++ trunk/Tools/ChangeLog 2013-10-19 19:55:32 UTC (rev 157673)
@@ -1,3 +1,13 @@
+2013-10-19 Andreas Kling <[email protected]>
+
+ RefPtr::releaseNonNull() incorrectly increments the refcount.
+ <https://webkit.org/b/123063>
+
+ Add an API test to verify that no extra refs are added when calling
+ RefPtr::releaseNonNull().
+
+ Reviewed by Anders Carlsson.
+
2013-10-18 Rik Cabanier <[email protected]>
Add Rik Cabanier to list of committers
https://bugs.webkit.org/show_bug.cgi?id=123031
Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp (157672 => 157673)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp 2013-10-19 16:48:42 UTC (rev 157672)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp 2013-10-19 19:55:32 UTC (rev 157673)
@@ -306,6 +306,18 @@
ASSERT_STREQ("ref(a) ref(b) | deref(a) deref(b) ", takeLogStr().c_str());
}
+TEST(WTF_RefPtr, ReleaseNonNull)
+{
+ RefLogger a("a");
+
+ {
+ RefPtr<RefLogger> refPtr = &a;
+ RefPtr<RefLogger> ref = refPtr.releaseNonNull();
+ }
+
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
TEST(WTF_RefPtr, Release)
{
DerivedRefLogger a("a");
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes