summaryrefslogtreecommitdiffstats
path: root/base/values.cc
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-20 02:34:57 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-20 02:34:57 +0000
commit0d0ed0c73c9710e8ab6ff80dd3750b70f0f751bf (patch)
treea9f66bd0f7c2df003a6f9066eee37dee067ce5dd /base/values.cc
parent0a7be8d8aed47cc460e1e848092377c2c426b89c (diff)
downloadchromium_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.cc36
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 ////////////////////