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