Index: src/core/SkPathRef.cpp |
diff --git a/src/core/SkPathRef.cpp b/src/core/SkPathRef.cpp |
index 12429aecfcc889b3244ab03c40dbfea423464780..14e6b0c658601f67dfbffacadc79cc9f538b1189 100644 |
--- a/src/core/SkPathRef.cpp |
+++ b/src/core/SkPathRef.cpp |
@@ -72,7 +72,9 @@ void SkPathRef::CreateTransformedCopy(SkAutoTUnref<SkPathRef>* dst, |
if (*dst != &src) { |
(*dst)->resetToSize(src.fVerbCnt, src.fPointCnt, src.fConicWeights.count()); |
- memcpy((*dst)->verbsMemWritable(), src.verbsMemBegin(), src.fVerbCnt * sizeof(uint8_t)); |
+ if (src.verbsMemBegin()) { |
+ memcpy((*dst)->verbsMemWritable(), src.verbsMemBegin(), src.fVerbCnt * sizeof(uint8_t)); |
+ } |
(*dst)->fConicWeights = src.fConicWeights; |
} |
@@ -275,8 +277,12 @@ void SkPathRef::copy(const SkPathRef& ref, |
SkDEBUGCODE(this->validate();) |
this->resetToSize(ref.fVerbCnt, ref.fPointCnt, ref.fConicWeights.count(), |
additionalReserveVerbs, additionalReservePoints); |
- memcpy(this->verbsMemWritable(), ref.verbsMemBegin(), ref.fVerbCnt * sizeof(uint8_t)); |
- memcpy(this->fPoints, ref.fPoints, ref.fPointCnt * sizeof(SkPoint)); |
+ if (ref.verbsMemBegin()) { |
+ memcpy(this->verbsMemWritable(), ref.verbsMemBegin(), ref.fVerbCnt * sizeof(uint8_t)); |
+ } |
+ if (ref.fPoints) { |
+ memcpy(this->fPoints, ref.fPoints, ref.fPointCnt * sizeof(SkPoint)); |
+ } |
fConicWeights = ref.fConicWeights; |
fBoundsIsDirty = ref.fBoundsIsDirty; |
if (!fBoundsIsDirty) { |