Chromium Code Reviews| Index: src/effects/gradients/SkGradientShader.cpp |
| diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp |
| index 5d200d18d354135f7f11e4807964631edc32409e..ee6984b8061bd3ff0ecba5bb13fcc2dcfb46a804 100644 |
| --- a/src/effects/gradients/SkGradientShader.cpp |
| +++ b/src/effects/gradients/SkGradientShader.cpp |
| @@ -154,8 +154,13 @@ SkGradientShaderBase::SkGradientShaderBase(SkFlattenableReadBuffer& buffer) : IN |
| int colorCount = fColorCount = buffer.getArrayCount(); |
| if (colorCount > kColorStorageCount) { |
| - size_t size = sizeof(SkColor) + sizeof(SkPMColor) + sizeof(Rec); |
| - fOrigColors = (SkColor*)sk_malloc_throw(size * colorCount); |
| + size_t allocSize = (sizeof(SkColor) + sizeof(SkPMColor) + sizeof(Rec)) * colorCount; |
| + if (buffer.validate(buffer.isAvailable(allocSize))) { |
|
reed1
2013/12/16 21:53:13
this double call pattern keeps appearing:
obj.val
sugoi
2013/12/17 15:55:45
Will do
|
| + fOrigColors = reinterpret_cast<SkColor*>(sk_malloc_throw(allocSize)); |
| + } else { |
| + fOrigColors = NULL; |
| + colorCount = fColorCount = 0; |
| + } |
| } else { |
| fOrigColors = fStorage; |
| } |