diff --git a/webrtc/base/copyonwritebuffer.h b/webrtc/base/copyonwritebuffer.h index 72fb4eea53..108aaa19d7 100644 --- a/webrtc/base/copyonwritebuffer.h +++ b/webrtc/base/copyonwritebuffer.h @@ -222,7 +222,13 @@ class CopyOnWriteBuffer { return; } - CloneDataIfReferenced(std::max(buffer_->capacity(), size)); + // Clone data if referenced. + if (!buffer_->HasOneRef()) { + buffer_ = new RefCountedObject( + buffer_->data(), + std::min(buffer_->size(), size), + std::max(buffer_->capacity(), size)); + } buffer_->SetSize(size); RTC_DCHECK(IsConsistent()); }