diff options
author | 2014-11-14 09:22:40 -0800 | |
---|---|---|
committer | 2014-11-14 09:22:40 -0800 | |
commit | d4897591fddf8f2a4860066449fb7dd8b0cc7b77 (patch) | |
tree | da215b78e52e601ee48d296b639a3c224c9234e7 /src | |
parent | 36e6e266b882b7687fb526dc13eeb23ffbc2b85e (diff) |
Don't pass null to memcmp.
This will allow us to add nonnull-attribute to the UBSAN bot.
We are in fact hitting a case where one of the arguments is null and the other
not, which seems dicey. I think the scenario is comparing the empty pathref
with another path ref that's just been COWed, without any verbs or points yet.
BUG=skia:
Review URL: https://codereview.chromium.org/732643002
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkPathRef.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/SkPathRef.cpp b/src/core/SkPathRef.cpp index dffb6a3646..ad85fd06a8 100644 --- a/src/core/SkPathRef.cpp +++ b/src/core/SkPathRef.cpp @@ -193,12 +193,18 @@ bool SkPathRef::operator== (const SkPathRef& ref) const { SkASSERT(!genIDMatch); return false; } + if (0 == ref.fVerbCnt) { + SkASSERT(0 == ref.fPointCnt); + return true; + } + SkASSERT(this->verbsMemBegin() && ref.verbsMemBegin()); if (0 != memcmp(this->verbsMemBegin(), ref.verbsMemBegin(), ref.fVerbCnt * sizeof(uint8_t))) { SkASSERT(!genIDMatch); return false; } + SkASSERT(this->points() && ref.points()); if (0 != memcmp(this->points(), ref.points(), ref.fPointCnt * sizeof(SkPoint))) { |