| Index: src/effects/gradients/SkGradientShader.cpp
|
| diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp
|
| index 5d200d18d354135f7f11e4807964631edc32409e..27761993461ba7761a8afc57c36eac9ec2754cc4 100644
|
| --- a/src/effects/gradients/SkGradientShader.cpp
|
| +++ b/src/effects/gradients/SkGradientShader.cpp
|
| @@ -513,14 +513,13 @@ const uint16_t* SkGradientShaderBase::getCache16() const {
|
|
|
| const SkPMColor* SkGradientShaderBase::getCache32() const {
|
| if (fCache32 == NULL) {
|
| - SkImageInfo info;
|
| - info.fWidth = kCache32Count;
|
| - info.fHeight = 4; // for our 4 dither rows
|
| - info.fAlphaType = kPremul_SkAlphaType;
|
| - info.fColorType = kPMColor_SkColorType;
|
| + // double the count for dither entries
|
| + const int entryCount = kCache32Count * 4;
|
| + const size_t allocSize = sizeof(SkPMColor) * entryCount;
|
|
|
| if (NULL == fCache32PixelRef) {
|
| - fCache32PixelRef = SkMallocPixelRef::NewAllocate(info, 0, NULL);
|
| + fCache32PixelRef = SkNEW_ARGS(SkMallocPixelRef,
|
| + (NULL, allocSize, NULL));
|
| }
|
| fCache32 = (SkPMColor*)fCache32PixelRef->getAddr();
|
| if (fColorCount == 2) {
|
| @@ -542,7 +541,8 @@ const SkPMColor* SkGradientShaderBase::getCache32() const {
|
| }
|
|
|
| if (fMapper) {
|
| - SkMallocPixelRef* newPR = SkMallocPixelRef::NewAllocate(info, 0, NULL);
|
| + SkMallocPixelRef* newPR = SkNEW_ARGS(SkMallocPixelRef,
|
| + (NULL, allocSize, NULL));
|
| SkPMColor* linear = fCache32; // just computed linear data
|
| SkPMColor* mapped = (SkPMColor*)newPR->getAddr(); // storage for mapped data
|
| SkUnitMapper* map = fMapper;
|
|
|