Index: src/core/SkPathRef.cpp |
=================================================================== |
--- src/core/SkPathRef.cpp (revision 12460) |
+++ src/core/SkPathRef.cpp (working copy) |
@@ -62,14 +62,20 @@ |
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; |