| Index: content/child/blob_storage/blob_transport_controller.cc
|
| diff --git a/content/child/blob_storage/blob_transport_controller.cc b/content/child/blob_storage/blob_transport_controller.cc
|
| index 4f6d14543d70fd2e2b276d135db836cf4f8bb764..11b5a3e619477725b53997f9467917d6a74d2bdf 100644
|
| --- a/content/child/blob_storage/blob_transport_controller.cc
|
| +++ b/content/child/blob_storage/blob_transport_controller.cc
|
| @@ -16,7 +16,6 @@
|
| #include "base/lazy_instance.h"
|
| #include "base/location.h"
|
| #include "base/memory/ptr_util.h"
|
| -#include "base/memory/scoped_vector.h"
|
| #include "base/memory/shared_memory.h"
|
| #include "base/metrics/histogram_macros.h"
|
| #include "base/numerics/safe_conversions.h"
|
| @@ -210,8 +209,8 @@ void BlobTransportController::OnMemoryRequest(
|
|
|
| // Since we can be writing to the same shared memory handle from multiple
|
| // requests, we keep them in a vector and lazily create them.
|
| - ScopedVector<SharedMemory> opened_memory;
|
| - opened_memory.resize(memory_handles->size());
|
| + std::vector<std::unique_ptr<SharedMemory>> opened_memory(
|
| + memory_handles->size());
|
|
|
| // We need to calculate how much memory we expect to be writing to the memory
|
| // segments so we can correctly map it the first time.
|
| @@ -252,13 +251,11 @@ void BlobTransportController::OnMemoryRequest(
|
| }
|
| case IPCBlobItemRequestStrategy::SHARED_MEMORY: {
|
| responses.push_back(BlobItemBytesResponse(request.request_number));
|
| - SharedMemory* memory = opened_memory[request.handle_index];
|
| - if (!memory) {
|
| + if (!opened_memory[request.handle_index]) {
|
| SharedMemoryHandle& handle = (*memory_handles)[request.handle_index];
|
| size_t size = shared_memory_sizes[request.handle_index];
|
| DCHECK(SharedMemory::IsHandleValid(handle));
|
| - std::unique_ptr<SharedMemory> shared_memory(
|
| - new SharedMemory(handle, false));
|
| + auto shared_memory = base::MakeUnique<SharedMemory>(handle, false);
|
|
|
| if (!shared_memory->Map(size)) {
|
| // This would happen if the renderer process doesn't have enough
|
| @@ -269,14 +266,15 @@ void BlobTransportController::OnMemoryRequest(
|
| << ".";
|
| return;
|
| }
|
| - memory = shared_memory.get();
|
| - opened_memory[request.handle_index] = shared_memory.release();
|
| + opened_memory[request.handle_index] = std::move(shared_memory);
|
| }
|
| - CHECK(memory->memory()) << "Couldn't map memory for blob transfer.";
|
| + CHECK(opened_memory[request.handle_index]->memory())
|
| + << "Couldn't map memory for blob transfer.";
|
| ReadStatus status = consolidation->ReadMemory(
|
| request.renderer_item_index, request.renderer_item_offset,
|
| request.size,
|
| - static_cast<char*>(memory->memory()) + request.handle_offset);
|
| + static_cast<char*>(opened_memory[request.handle_index]->memory()) +
|
| + request.handle_offset);
|
| DCHECK(status == ReadStatus::OK)
|
| << "Error reading from consolidated blob: "
|
| << static_cast<int>(status);
|
|
|