diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-20 02:34:57 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-20 02:34:57 +0000 |
commit | 0d0ed0c73c9710e8ab6ff80dd3750b70f0f751bf (patch) | |
tree | a9f66bd0f7c2df003a6f9066eee37dee067ce5dd /base/values.cc | |
parent | 0a7be8d8aed47cc460e1e848092377c2c426b89c (diff) | |
download | chromium_src-0d0ed0c73c9710e8ab6ff80dd3750b70f0f751bf.zip chromium_src-0d0ed0c73c9710e8ab6ff80dd3750b70f0f751bf.tar.gz chromium_src-0d0ed0c73c9710e8ab6ff80dd3750b70f0f751bf.tar.bz2 |
Reverting due to memory waterfall failures.
Revert 138044 - Allowed BinaryValue to take a NULL buffer.
BUG=127630
Review URL: https://chromiumcodereview.appspot.com/10389088
TBR=mitchellwrosen@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10388207
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138050 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/values.cc')
-rw-r--r-- | base/values.cc | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/base/values.cc b/base/values.cc index 648d0bc..d561d68 100644 --- a/base/values.cc +++ b/base/values.cc @@ -298,32 +298,33 @@ bool StringValue::Equals(const Value* other) const { ///////////////////// BinaryValue //////////////////// -BinaryValue::BinaryValue() - : Value(TYPE_BINARY), - buffer_(NULL), - size_(0) { +BinaryValue::~BinaryValue() { + DCHECK(buffer_); + if (buffer_) + delete[] buffer_; } -BinaryValue::BinaryValue(scoped_ptr<char> buffer, size_t size) - : Value(TYPE_BINARY), - buffer_(buffer.release()), - size_(size) { -} +// static +BinaryValue* BinaryValue::Create(char* buffer, size_t size) { + if (!buffer) + return NULL; -BinaryValue::~BinaryValue() { + return new BinaryValue(buffer, size); } // static BinaryValue* BinaryValue::CreateWithCopiedBuffer(const char* buffer, size_t size) { + if (!buffer) + return NULL; + char* buffer_copy = new char[size]; memcpy(buffer_copy, buffer, size); - scoped_ptr<char> scoped_buffer_copy(buffer_copy); - return new BinaryValue(scoped_buffer_copy.Pass(), size); + return new BinaryValue(buffer_copy, size); } BinaryValue* BinaryValue::DeepCopy() const { - return CreateWithCopiedBuffer(buffer_.get(), size_); + return CreateWithCopiedBuffer(buffer_, size_); } bool BinaryValue::Equals(const Value* other) const { @@ -332,7 +333,14 @@ bool BinaryValue::Equals(const Value* other) const { const BinaryValue* other_binary = static_cast<const BinaryValue*>(other); if (other_binary->size_ != size_) return false; - return !memcmp(GetBuffer(), other_binary->GetBuffer(), size_); + return !memcmp(buffer_, other_binary->buffer_, size_); +} + +BinaryValue::BinaryValue(char* buffer, size_t size) + : Value(TYPE_BINARY), + buffer_(buffer), + size_(size) { + DCHECK(buffer_); } ///////////////////// DictionaryValue //////////////////// |