summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-10-17 13:11:00 +0100
committerBen Murdoch <benm@google.com>2011-10-17 18:13:15 +0100
commit50dfa6485ba2846de19ccb19bda0872ced920e17 (patch)
tree7382de4413bd4fa277b55f0a27833ede4efa01a6
parent32ed6f0793dd80c69edf2c7613b58df55ce211f3 (diff)
downloadexternal_webkit-50dfa6485ba2846de19ccb19bda0872ced920e17.zip
external_webkit-50dfa6485ba2846de19ccb19bda0872ced920e17.tar.gz
external_webkit-50dfa6485ba2846de19ccb19bda0872ced920e17.tar.bz2
Fix crash in ImageBufferAndroid.
In the case that we do not have sufficient free memory to create a copy of a bitmap, we must return an Image wrapping an empty bitmap, rather than null itself. This handling is particular (but not exclusive) to Android, where we cannot pass a null NativeImagePtr like some other platforms do (as we need it to be valid in the BitmapImage constructor). Bug:5409973 Change-Id: I888cf1db73a9176db2a3ea2721ca0e258d9c7773
-rw-r--r--Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp b/Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp
index bbde998..691fbca 100644
--- a/Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp
+++ b/Source/WebCore/platform/graphics/android/ImageBufferAndroid.cpp
@@ -85,11 +85,9 @@ PassRefPtr<Image> ImageBuffer::copyImage() const
SkDevice* device = canvas->getDevice();
const SkBitmap& orig = device->accessBitmap(false);
- if (!PlatformBridge::canSatisfyMemoryAllocation(orig.getSize()))
- return 0;
-
SkBitmap copy;
- orig.copyTo(&copy, orig.config());
+ if (PlatformBridge::canSatisfyMemoryAllocation(orig.getSize()))
+ orig.copyTo(&copy, orig.config());
SkBitmapRef* ref = new SkBitmapRef(copy);
RefPtr<Image> image = BitmapImage::create(ref, 0);