Changeset 207225 in webkit
- Timestamp:
- Oct 12, 2016 10:41:00 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r207179 r207225 1 2016-10-11 Sam Weinig <sam@webkit.org> 2 3 Optional's move-constructor and move-assignment operator don't disengage the value being moved from 4 https://bugs.webkit.org/show_bug.cgi?id=163309 5 6 Reviewed by Anders Carlsson. 7 8 * wtf/Optional.h: 9 (WTF::Optional::Optional): 10 (WTF::Optional::operator=): 11 Disengage 'other' on move-construction and move-assignment. 12 1 13 2016-10-08 Filip Pizlo <fpizlo@apple.com> 2 14 -
trunk/Source/WTF/wtf/Optional.h
r199107 r207225 72 72 : m_isEngaged(other.m_isEngaged) 73 73 { 74 if (m_isEngaged) 74 if (m_isEngaged) { 75 75 new (NotNull, &m_value) T(WTFMove(*other.asPtr())); 76 other.m_isEngaged = false; 77 } 76 78 } 77 79 … … 122 124 new (NotNull, &m_value) T(WTFMove(*other.asPtr())); 123 125 m_isEngaged = true; 126 other.m_isEngaged = false; 124 127 } 125 128 return *this; -
trunk/Tools/ChangeLog
r207220 r207225 1 2016-10-11 Sam Weinig <sam@webkit.org> 2 3 Optional's move-constructor and move-assignment operator don't disengage the value being moved from 4 https://bugs.webkit.org/show_bug.cgi?id=163309 5 6 Reviewed by Anders Carlsson. 7 8 * TestWebKitAPI/Tests/WTF/Optional.cpp: 9 (TestWebKitAPI::TEST): 10 Add tests for Optional's move-constructor and move-assignment operator. 11 1 12 2016-10-12 Wenson Hsieh <wenson_hsieh@apple.com> 2 13 -
trunk/Tools/TestWebKitAPI/Tests/WTF/Optional.cpp
r199107 r207225 26 26 #include "config.h" 27 27 28 #include "Counters.h" 28 29 #include <wtf/Optional.h> 29 30 … … 147 148 } 148 149 150 TEST(WTF_Optional, MoveConstructor) 151 { 152 { 153 CopyMoveCounter::TestingScope scope; 154 155 Optional<CopyMoveCounter> optional(InPlace); 156 157 EXPECT_EQ(1U, CopyMoveCounter::constructionCount); 158 EXPECT_EQ(0U, CopyMoveCounter::copyCount); 159 EXPECT_EQ(0U, CopyMoveCounter::moveCount); 160 161 EXPECT_TRUE(static_cast<bool>(optional)); 162 163 Optional<CopyMoveCounter> movedTo(WTFMove(optional)); 164 165 EXPECT_EQ(1U, CopyMoveCounter::constructionCount); 166 EXPECT_EQ(0U, CopyMoveCounter::copyCount); 167 EXPECT_EQ(1U, CopyMoveCounter::moveCount); 168 169 EXPECT_FALSE(static_cast<bool>(optional)); 170 EXPECT_TRUE(static_cast<bool>(movedTo)); 171 } 172 } 173 174 TEST(WTF_Optional, MoveAssignment) 175 { 176 { 177 CopyMoveCounter::TestingScope scope; 178 179 Optional<CopyMoveCounter> optional(InPlace); 180 181 EXPECT_EQ(1U, CopyMoveCounter::constructionCount); 182 EXPECT_EQ(0U, CopyMoveCounter::copyCount); 183 EXPECT_EQ(0U, CopyMoveCounter::moveCount); 184 185 EXPECT_TRUE(static_cast<bool>(optional)); 186 187 Optional<CopyMoveCounter> movedTo = WTFMove(optional); 188 189 EXPECT_EQ(1U, CopyMoveCounter::constructionCount); 190 EXPECT_EQ(0U, CopyMoveCounter::copyCount); 191 EXPECT_EQ(1U, CopyMoveCounter::moveCount); 192 193 EXPECT_FALSE(static_cast<bool>(optional)); 194 EXPECT_TRUE(static_cast<bool>(movedTo)); 195 } 196 } 149 197 150 198 } // namespace TestWebKitAPI
Note: See TracChangeset
for help on using the changeset viewer.