Chromium Code Reviews| Index: webrtc/base/copyonwritebuffer.h | 
| diff --git a/webrtc/base/copyonwritebuffer.h b/webrtc/base/copyonwritebuffer.h | 
| index 72fb4eea53495a2575ee435efade9d182afd4a69..41d4090a869b20f35b3ca01eaffb8f795ff87869 100644 | 
| --- a/webrtc/base/copyonwritebuffer.h | 
| +++ b/webrtc/base/copyonwritebuffer.h | 
| @@ -162,6 +162,23 @@ class CopyOnWriteBuffer { | 
| RTC_DCHECK(IsConsistent()); | 
| } | 
| + // Replace the contents of the buffer. Ensure capacity is at least |capacity|. | 
| + template <typename T, | 
| + typename std::enable_if< | 
| + internal::BufferCompat<uint8_t, T>::value>::type* = nullptr> | 
| + void SetData(const T* data, size_t size, size_t capacity) { | 
| 
 
kwiberg-webrtc
2016/09/09 08:55:13
Isn't this equivalent to calling
  x.EnsureCapaci
 
danilchap
2016/09/09 11:21:17
1. SetData signatures mirror constructor signature
 
kwiberg-webrtc
2016/09/09 12:59:13
I'm not sure. You can always replace
  Buffer buf
 
danilchap
2016/09/09 16:00:56
Yes, I'm wrong. it is not same. Buffer may benefit
 
 | 
| + RTC_DCHECK(IsConsistent()); | 
| + capacity = std::max(size, capacity); | 
| + if (!buffer_ || !buffer_->HasOneRef() || buffer_->capacity() < capacity) { | 
| + buffer_ = capacity > 0 | 
| + ? new RefCountedObject<Buffer>(data, size, capacity) | 
| + : nullptr; | 
| + } else { | 
| + buffer_->SetData(data, size); | 
| + } | 
| + RTC_DCHECK(IsConsistent()); | 
| + } | 
| + | 
| template <typename T, | 
| size_t N, | 
| typename std::enable_if< |