Index: third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp |
diff --git a/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp b/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp |
index 58b33b4e56ad98284fcc6bd9584a97adb2bebd28..4b1871ed549780f9c06a47596714589c4f119e47 100644 |
--- a/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp |
+++ b/third_party/WebKit/Source/platform/graphics/ImageBuffer.cpp |
@@ -292,7 +292,12 @@ bool ImageBuffer::getImageData(Multiply multiplied, const IntRect& rect, WTF::Ar |
return false; |
if (!isSurfaceValid()) { |
- WTF::ArrayBufferContents result(rect.width() * rect.height(), 4, WTF::ArrayBufferContents::NotShared, WTF::ArrayBufferContents::ZeroInitialize); |
+ size_t allocSizeInBytes = rect.width() * rect.height() * 4; |
+ void* data; |
+ WTF::ArrayBufferContents::allocateMemoryOrNull(allocSizeInBytes, WTF::ArrayBufferContents::ZeroInitialize, data); |
+ if (!data) |
+ return false; |
+ WTF::ArrayBufferContents result(data, allocSizeInBytes, WTF::ArrayBufferContents::NotShared); |
result.transfer(contents); |
return true; |
} |
@@ -308,12 +313,12 @@ bool ImageBuffer::getImageData(Multiply multiplied, const IntRect& rect, WTF::Ar |
|| rect.y() < 0 |
|| rect.maxX() > m_surface->size().width() |
|| rect.maxY() > m_surface->size().height(); |
- WTF::ArrayBufferContents result( |
- rect.width() * rect.height(), 4, |
- WTF::ArrayBufferContents::NotShared, |
- mayHaveStrayArea |
- ? WTF::ArrayBufferContents::ZeroInitialize |
- : WTF::ArrayBufferContents::DontInitialize); |
+ size_t allocSizeInBytes = rect.width() * rect.height() * 4; |
+ void* data; |
+ WTF::ArrayBufferContents::allocateMemoryOrNull(allocSizeInBytes, mayHaveStrayArea ? WTF::ArrayBufferContents::ZeroInitialize : WTF::ArrayBufferContents::DontInitialize, data); |
Stephen White
2016/03/07 22:09:54
Nit: might be clearer to pull the initialize enum
|
+ if (!data) |
+ return false; |
+ WTF::ArrayBufferContents result(data, allocSizeInBytes, WTF::ArrayBufferContents::NotShared); |
SkAlphaType alphaType = (multiplied == Premultiplied) ? kPremul_SkAlphaType : kUnpremul_SkAlphaType; |
SkImageInfo info = SkImageInfo::Make(rect.width(), rect.height(), kRGBA_8888_SkColorType, alphaType); |