From b06e88dc6505412cc2b1a5f0bfb0f669465e1f8e Mon Sep 17 00:00:00 2001 From: "robertphillips@google.com" Date: Tue, 3 Dec 2013 17:15:36 +0000 Subject: Fix for SkPathRef::CreateTransformedCopy bug https://codereview.chromium.org/99423004/ git-svn-id: http://skia.googlecode.com/svn/trunk@12464 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/core/SkPathRef.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/core') diff --git a/src/core/SkPathRef.cpp b/src/core/SkPathRef.cpp index 3ad5ae7e02..1678fdc235 100644 --- a/src/core/SkPathRef.cpp +++ b/src/core/SkPathRef.cpp @@ -63,14 +63,20 @@ void SkPathRef::CreateTransformedCopy(SkAutoTUnref* dst, return; } - bool dstUnique = (*dst)->unique(); - if (!dstUnique) { + if (!(*dst)->unique()) { dst->reset(SkNEW(SkPathRef)); + } + + if (*dst != &src) { (*dst)->resetToSize(src.fVerbCnt, src.fPointCnt, src.fConicWeights.count()); memcpy((*dst)->verbsMemWritable(), src.verbsMemBegin(), src.fVerbCnt * sizeof(uint8_t)); (*dst)->fConicWeights = src.fConicWeights; } + SkASSERT((*dst)->countPoints() == src.countPoints()); + SkASSERT((*dst)->countVerbs() == src.countVerbs()); + SkASSERT((*dst)->fConicWeights.count() == src.fConicWeights.count()); + // Need to check this here in case (&src == dst) bool canXformBounds = !src.fBoundsIsDirty && matrix.rectStaysRect() && src.countPoints() > 1; -- cgit v1.2.3