| Index: Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp
|
| ===================================================================
|
| --- Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (revision 88846)
|
| +++ Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (working copy)
|
| @@ -1632,6 +1632,10 @@
|
| if (scaledSize.height() < 1)
|
| scaledSize.setHeight(1);
|
|
|
| + float area = 4.0f * scaledSize.width() * scaledSize.height();
|
| + if (area > static_cast<float>(std::numeric_limits<int>::max()))
|
| + return 0;
|
| +
|
| return createEmptyImageData(scaledSize);
|
| }
|
|
|
| @@ -1668,7 +1672,12 @@
|
| ImageBuffer* buffer = canvas()->buffer();
|
| if (!buffer)
|
| return createEmptyImageData(scaledRect.size());
|
| - return ImageData::create(scaledRect.size(), buffer->getUnmultipliedImageData(scaledRect));
|
| +
|
| + RefPtr<ByteArray> byteArray = buffer->getUnmultipliedImageData(scaledRect);
|
| + if (!byteArray)
|
| + return 0;
|
| +
|
| + return ImageData::create(scaledRect.size(), byteArray.release());
|
| }
|
|
|
| void CanvasRenderingContext2D::putImageData(ImageData* data, float dx, float dy, ExceptionCode& ec)
|
|
|