remove duplicate linked list adjustment
authorcaryclark <caryclark@google.com>
Mon, 31 Aug 2015 16:46:20 +0000 (09:46 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 31 Aug 2015 16:46:20 +0000 (09:46 -0700)
commitae576b733dc427761bd254dcce5ae5a1c5d552df
treee18a80a1c7b6aa579e8ef9527c000a8ae8c1b077
parent5e04bcfddde2ab22a04187199e9a953523886cf6
remove duplicate linked list adjustment

The list of intersection points on a curve segment may have
entries that can be safely removed when nearby points have
nearly the same t value and point value. When a path includes
very large curves as well as small ones, as is the case with
this fuzzer, additional points may lie between the similar
points that do not meet the nearby criteria.

After merging the nearby point with its doppelganger,
SkOpSegment::moveNearby() unnecessarily set the doppelganger's
next pointer to the one following the nearby point. While
this usually has no effect, since the merge already updated
the linked list, the explicit call removes the additional
outlier points from the segment.

TBR=reed@google.com
BUG=526025

Review URL: https://codereview.chromium.org/1323813003
src/pathops/SkOpSegment.cpp
tests/PathOpsBuilderTest.cpp
tests/PathOpsOpTest.cpp