| Index: content/common/gpu/gpu_memory_buffer_factory_shared_memory.cc
|
| diff --git a/content/common/gpu/gpu_memory_buffer_factory_shared_memory.cc b/content/common/gpu/gpu_memory_buffer_factory_shared_memory.cc
|
| index 9a4bdcf538cab2132266fe8de6202c1f1e7be133..b10fd00dfbc98f756bbb68ba087dd49dc8d1f0fa 100644
|
| --- a/content/common/gpu/gpu_memory_buffer_factory_shared_memory.cc
|
| +++ b/content/common/gpu/gpu_memory_buffer_factory_shared_memory.cc
|
| @@ -38,8 +38,18 @@ GpuMemoryBufferFactorySharedMemory::CreateGpuMemoryBuffer(
|
| int client_id,
|
| gfx::PluginWindowHandle surface_handle) {
|
| base::SharedMemory shared_memory;
|
| - if (!shared_memory.CreateAnonymous(
|
| - size.GetArea() * GpuMemoryBufferImpl::BytesPerPixel(format)))
|
| +
|
| + size_t stride_in_bytes = 0;
|
| + if (!GpuMemoryBufferImpl::StrideInBytes(
|
| + size.width(), format, &stride_in_bytes))
|
| + return gfx::GpuMemoryBufferHandle();
|
| +
|
| + base::CheckedNumeric<size_t> size_in_bytes = stride_in_bytes;
|
| + size_in_bytes *= size.height();
|
| + if (!size_in_bytes.IsValid())
|
| + return gfx::GpuMemoryBufferHandle();
|
| +
|
| + if (!shared_memory.CreateAnonymous(size_in_bytes.ValueOrDie()))
|
| return gfx::GpuMemoryBufferHandle();
|
|
|
| gfx::GpuMemoryBufferHandle handle;
|
|
|