diff --git a/webrtc/base/buffer.h b/webrtc/base/buffer.h index 5c9380afee..234039607a 100644 --- a/webrtc/base/buffer.h +++ b/webrtc/base/buffer.h @@ -180,12 +180,10 @@ class Buffer { return std::move(*this); } - // Resets the buffer to zero size and capacity. Works even if the buffer has - // been moved from. + // Resets the buffer to zero size without altering capacity. Works even if the + // buffer has been moved from. void Clear() { - data_.reset(); size_ = 0; - capacity_ = 0; assert(IsConsistent()); } diff --git a/webrtc/base/buffer_unittest.cc b/webrtc/base/buffer_unittest.cc index 0b93b9b56e..f917bc6181 100644 --- a/webrtc/base/buffer_unittest.cc +++ b/webrtc/base/buffer_unittest.cc @@ -177,4 +177,16 @@ TEST(BufferTest, TestSwap) { EXPECT_EQ(buf2.data(), data1); } +TEST(BufferTest, TestClear) { + Buffer buf; + buf.SetData(kTestData, 15); + EXPECT_EQ(buf.size(), 15u); + EXPECT_EQ(buf.capacity(), 15u); + const char *data = buf.data(); + buf.Clear(); + EXPECT_EQ(buf.size(), 0u); + EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk. + EXPECT_EQ(buf.data(), data); // No reallocation. +} + } // namespace rtc