Index: content/child/child_shared_bitmap_manager.cc |
diff --git a/content/child/child_shared_bitmap_manager.cc b/content/child/child_shared_bitmap_manager.cc |
index daa46279bb74a343a54aa66b34b93b238c66abb3..3374f4a98ba32a39e14e78a68751bf81792ebfed 100644 |
--- a/content/child/child_shared_bitmap_manager.cc |
+++ b/content/child/child_shared_bitmap_manager.cc |
@@ -108,15 +108,24 @@ ChildSharedBitmapManager::AllocateSharedMemoryBitmap(const gfx::Size& size) { |
std::unique_ptr<base::SharedMemory> memory; |
#if defined(OS_POSIX) |
base::SharedMemoryHandle handle; |
- sender_->Send(new ChildProcessHostMsg_SyncAllocateSharedBitmap( |
- memory_size, id, &handle)); |
+ bool send_success = |
+ sender_->Send(new ChildProcessHostMsg_SyncAllocateSharedBitmap( |
+ memory_size, id, &handle)); |
+ if (!send_success) |
+ return nullptr; |
memory = base::WrapUnique(new base::SharedMemory(handle, false)); |
if (!memory->Map(memory_size)) |
CollectMemoryUsageAndDie(size, memory_size); |
#else |
- memory = ChildThreadImpl::AllocateSharedMemory(memory_size, sender_.get()); |
- if (!memory) |
- CollectMemoryUsageAndDie(size, memory_size); |
+ bool out_of_memory; |
+ memory = ChildThreadImpl::AllocateSharedMemory(memory_size, sender_.get(), |
+ &out_of_memory); |
+ if (!memory) { |
+ if (out_of_memory) |
+ CollectMemoryUsageAndDie(size, memory_size); |
+ else |
+ return nullptr; |
+ } |
if (!memory->Map(memory_size)) |
CollectMemoryUsageAndDie(size, memory_size); |