Chromium Code Reviews| Index: content/child/v8_value_converter_impl.cc |
| diff --git a/content/child/v8_value_converter_impl.cc b/content/child/v8_value_converter_impl.cc |
| index dd3678809a2f520193b172c53d17f54cb72a0e01..86554c33915beb1850a49f10781c027f097594e8 100644 |
| --- a/content/child/v8_value_converter_impl.cc |
| +++ b/content/child/v8_value_converter_impl.cc |
| @@ -11,6 +11,7 @@ |
| #include <memory> |
| #include <string> |
| #include <utility> |
| +#include <vector> |
| #include "base/bind.h" |
| #include "base/bind_helpers.h" |
| @@ -268,9 +269,7 @@ v8::Local<v8::Value> V8ValueConverterImpl::ToV8ValueImpl( |
| static_cast<const base::DictionaryValue*>(value)); |
| case base::Value::Type::BINARY: |
| - return ToArrayBuffer(isolate, |
| - creation_context, |
| - static_cast<const base::BinaryValue*>(value)); |
| + return ToArrayBuffer(isolate, creation_context, value); |
| default: |
| LOG(ERROR) << "Unexpected value type: " << value->GetType(); |
| @@ -501,9 +500,9 @@ std::unique_ptr<base::Value> V8ValueConverterImpl::FromV8ArrayBuffer( |
| } else if (val->IsArrayBufferView()) { |
| v8::Local<v8::ArrayBufferView> view = val.As<v8::ArrayBufferView>(); |
| size_t byte_length = view->ByteLength(); |
| - auto buffer = base::MakeUnique<char[]>(byte_length); |
| - view->CopyContents(buffer.get(), byte_length); |
| - return base::MakeUnique<base::BinaryValue>(std::move(buffer), byte_length); |
| + std::vector<char> buffer(byte_length); |
| + view->CopyContents(buffer.data(), buffer.size()); |
|
jdoerrie
2017/02/10 11:00:35
Unfortunately, this will always zero initialize |b
|
| + return base::MakeUnique<base::BinaryValue>(std::move(buffer)); |
| } else { |
| NOTREACHED() << "Only ArrayBuffer and ArrayBufferView should get here."; |
| return nullptr; |