From d4897591fddf8f2a4860066449fb7dd8b0cc7b77 Mon Sep 17 00:00:00 2001 From: mtklein Date: Fri, 14 Nov 2014 09:22:40 -0800 Subject: 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 --- src/core/SkPathRef.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') 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))) { -- cgit v1.2.3