From d5176a2fb6e86bba7b12df3d9f641228b30f3024 Mon Sep 17 00:00:00 2001 From: reed Date: Thu, 21 Aug 2014 12:32:40 -0700 Subject: remember to init fOrigPos in legacy constructor NOTREECHECKS=True R=caryclark@google.com, mtklein@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/496833002 --- src/effects/gradients/SkGradientShader.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp index c84e46a641..b14a3f7e4f 100644 --- a/src/effects/gradients/SkGradientShader.cpp +++ b/src/effects/gradients/SkGradientShader.cpp @@ -216,7 +216,7 @@ SkGradientShaderBase::SkGradientShaderBase(SkReadBuffer& buffer) : INHERITED(buf int colorCount = fColorCount = buffer.getArrayCount(); if (colorCount > kColorStorageCount) { - size_t allocSize = (sizeof(SkColor) + sizeof(SkPMColor) + sizeof(Rec)) * colorCount; + size_t allocSize = (sizeof(SkColor) + sizeof(SkScalar) + sizeof(Rec)) * colorCount; if (buffer.validateAvailable(allocSize)) { fOrigColors = reinterpret_cast(sk_malloc_throw(allocSize)); } else { @@ -228,20 +228,26 @@ SkGradientShaderBase::SkGradientShaderBase(SkReadBuffer& buffer) : INHERITED(buf } buffer.readColorArray(fOrigColors, colorCount); + fOrigPos = (SkScalar*)(fOrigColors + colorCount); + { uint32_t packed = buffer.readUInt(); fGradFlags = SkToU8(unpack_flags(packed)); fTileMode = unpack_mode(packed); } fTileProc = gTileProcs[fTileMode]; - fRecs = (Rec*)(fOrigColors + colorCount); + fRecs = (Rec*)(fOrigPos + colorCount); if (colorCount > 2) { Rec* recs = fRecs; recs[0].fPos = 0; + fOrigPos[0] = 0; for (int i = 1; i < colorCount; i++) { recs[i].fPos = buffer.readInt(); recs[i].fScale = buffer.readUInt(); + fOrigPos[i] = SkFixedToScalar(recs[i].fPos); } + } else { + fOrigPos = NULL; } buffer.readMatrix(&fPtsToUnit); this->initCommon(); -- cgit v1.2.3