summaryrefslogtreecommitdiffstats
path: root/skia/effects/SkBlurMask.cpp
diff options
context:
space:
mode:
authordeanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-30 12:50:58 +0000
committerdeanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-30 12:50:58 +0000
commit9a136cdf89222c11b0dae86e19ff0b14956f929a (patch)
tree44f007a586303dce4a7a7024fd785eee22da61fe /skia/effects/SkBlurMask.cpp
parente91a73a43d79d437c59a5a44396e919628f3f707 (diff)
downloadchromium_src-9a136cdf89222c11b0dae86e19ff0b14956f929a.zip
chromium_src-9a136cdf89222c11b0dae86e19ff0b14956f929a.tar.gz
chromium_src-9a136cdf89222c11b0dae86e19ff0b14956f929a.tar.bz2
Integrate change of Skia upstream.
This is a cherry-pick of the following change: http://code.google.com/p/skia/source/detail?r=159 We introduce this change for the 'lighter' composite operation. We need kAdd_Mode, which is introduced in this change for the operation. Patch by Shinichiro Hamaji. BUG=1619 Review URL: http://codereview.chromium.org/93093 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14938 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'skia/effects/SkBlurMask.cpp')
-rw-r--r--skia/effects/SkBlurMask.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/skia/effects/SkBlurMask.cpp b/skia/effects/SkBlurMask.cpp
index a7b3202..d60288b 100644
--- a/skia/effects/SkBlurMask.cpp
+++ b/skia/effects/SkBlurMask.cpp
@@ -234,10 +234,15 @@ bool SkBlurMask::Blur(SkMask* dst, const SkMask& src,
if (src.fImage)
{
+ size_t dstSize = dst->computeImageSize();
+ if (0 == dstSize) {
+ return false; // too big to allocate, abort
+ }
+
int sw = src.fBounds.width();
int sh = src.fBounds.height();
const uint8_t* sp = src.fImage;
- uint8_t* dp = SkMask::AllocImage(dst->computeImageSize());
+ uint8_t* dp = SkMask::AllocImage(dstSize);
SkAutoTCallVProc<uint8_t, SkMask_FreeImage> autoCall(dp);
@@ -258,7 +263,11 @@ bool SkBlurMask::Blur(SkMask* dst, const SkMask& src,
// the blur into it (applying the src)
if (style == kInner_Style)
{
- dst->fImage = SkMask::AllocImage(src.computeImageSize());
+ size_t srcSize = src.computeImageSize();
+ if (0 == srcSize) {
+ return false; // too big to allocate, abort
+ }
+ dst->fImage = SkMask::AllocImage(srcSize);
merge_src_with_blur(dst->fImage, sp, sw, sh,
dp + rx + ry*dst->fBounds.width(),
dst->fBounds.width());