diff options
author | junov@chromium.org <junov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-19 17:31:27 +0000 |
---|---|---|
committer | junov@chromium.org <junov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-19 17:31:27 +0000 |
commit | f40857d4097783ae77e4d596c9e40391a38620c1 (patch) | |
tree | 92d4cd142f26523c90623efcbbb64c5b38d25b23 /skia/ext/platform_canvas.cc | |
parent | f125146993f5b26d7aaf9264cdff891b0b45c681 (diff) | |
download | chromium_src-f40857d4097783ae77e4d596c9e40391a38620c1.zip chromium_src-f40857d4097783ae77e4d596c9e40391a38620c1.tar.gz chromium_src-f40857d4097783ae77e4d596c9e40391a38620c1.tar.bz2 |
Fix crash when allocation of very large HTML canvas fails.
This change introduces skia::TryCreateBitmapCanvas, which is a
non-crashing version of CreateBitmapCanvas. This patch alone
does not fix that crash. A patch in WebKit will be necessary
to make the ImageBuffer constructor in ImageBufferSkia.cpp
call TryCreateBitmapCanvas.
BUG=88038
TEST=http://www.atopon.org/maze/
Review URL: http://codereview.chromium.org/7686006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97474 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'skia/ext/platform_canvas.cc')
-rw-r--r-- | skia/ext/platform_canvas.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/skia/ext/platform_canvas.cc b/skia/ext/platform_canvas.cc index df7ded6..279af45 100644 --- a/skia/ext/platform_canvas.cc +++ b/skia/ext/platform_canvas.cc @@ -34,6 +34,15 @@ SkCanvas* CreateBitmapCanvas(int width, int height, bool is_opaque) { return new PlatformCanvas(width, height, is_opaque); } +SkCanvas* TryCreateBitmapCanvas(int width, int height, bool is_opaque) { + PlatformCanvas* canvas = new PlatformCanvas(); + if (!canvas->initialize(width, height, is_opaque)) { + delete canvas; + canvas = NULL; + } + return canvas; +} + SkDevice* GetTopDevice(const SkCanvas& canvas) { SkCanvas::LayerIter iter(const_cast<SkCanvas*>(&canvas), false); return iter.device(); |