Chromium Code Reviews| Index: net/base/io_buffer.cc |
| =================================================================== |
| --- net/base/io_buffer.cc (revision 30229) |
| +++ net/base/io_buffer.cc (working copy) |
| @@ -19,15 +19,21 @@ |
| data_ = base_->data() + used_; |
| } |
| -void GrowableIOBuffer::set_capacity(int capacity) { |
| +bool GrowableIOBuffer::SetCapacity(int capacity) { |
| DCHECK_GE(capacity, 0); |
|
wtc
2009/11/09 22:37:23
Let's change this DCHECK to a CHECK.
|
| - real_data_.reset(static_cast<char*>(realloc(real_data_.release(), capacity))); |
| + char* cur_buf = real_data_.release(); |
| + real_data_.reset(static_cast<char*>(realloc(cur_buf, capacity))); |
| + if (real_data_.get() == NULL && capacity != 0) { |
| + real_data_.reset(cur_buf); |
| + return false; |
| + } |
| capacity_ = capacity; |
| CHECK(real_data_.get() != NULL || capacity == 0); |
|
wtc
2009/10/27 22:42:10
You can remove this CHECK now because its expressi
|
| if (offset_ > capacity) |
| set_offset(capacity); |
| else |
| set_offset(offset_); // The pointer may have changed. |
| + return true; |
| } |
| void GrowableIOBuffer::set_offset(int offset) { |