| Index: tests/PathOpsBuilderTest.cpp
|
| diff --git a/tests/PathOpsBuilderTest.cpp b/tests/PathOpsBuilderTest.cpp
|
| index df77100b0104f10e97dfaeb9bb8ea7ddff424b86..08fc6327328aba833d2c01511424fd134af480a4 100644
|
| --- a/tests/PathOpsBuilderTest.cpp
|
| +++ b/tests/PathOpsBuilderTest.cpp
|
| @@ -150,3 +150,124 @@ DEF_TEST(BuilderIssue502792_2, reporter) {
|
| SkPath result;
|
| builder.resolve(&result);
|
| }
|
| +
|
| +DEF_TEST(Fuzz846, reporter) {
|
| +/*
|
| +<clipPath id="clip-circle">
|
| + <circle id="circle" cx="60" cy="60" r="50" />
|
| +</clipPath>
|
| +<clipPath id="clip-rect">
|
| + <clipPath id="clip-rect">
|
| + <clipPath id="clip-rect">
|
| + <clipPath id="clip-rect">
|
| + <rect x="10" y="30" width="0" height="60" />
|
| + <rect x="10" y="30" width="0" height="60" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="32668" />
|
| + <rect x="10" y="30" width="100" height="18446744073709551615" />
|
| + <rect x="10" y="255" width="100" height="60" />
|
| + <rect width="100" height="60" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="100" height="4294967236" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + </clipPath>
|
| + <rect x="10" y="30" width="0" height="60" />
|
| + <rect x="10" y="30" width="0" height="0.18093252719929986369568203" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="32668" height="60" />
|
| + <rect x="10" y="30" width="100" height="18446744073709551615" />
|
| + <rect x="10" y="255" width="100" height="60" />
|
| + <rect x="2147483649" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + </clipPath>
|
| + <rect x="10" y="30" width="0" height="60" />
|
| + <rect x="10" y="30" width="0" height="60" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="32668" height="60" />
|
| + <rect x="10" y="30" width="100" height="18446744073709551615" />
|
| + <rect x="10" y="255" width="100" height="60" />
|
| + <rect x="2147483649" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="10" y="2879753595" width="100" height="60" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + </clipPath>
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="0" height="60" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="32668" height="60" />
|
| + <rect x="10" y="30" width="100" height="18446744073709551615" />
|
| + <rect x="10" y="255" width="100" height="60" />
|
| + <rect x="2147483649" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="10" y="30" width="100" height="4294967236" />
|
| + <rect x="10" y="30" width="100" height="4294967236" />
|
| + <rect x="10" y="30" width="100" height="4294967236" />
|
| + <rect x="10" y="30" width="100" height="4294967236" />
|
| + <rect x="10" y="30" width="100" height="60" />
|
| + <rect x="757798030" y="30" width="100" height="60" />
|
| +*/
|
| + SkPath clipCircle, clipRect;
|
| + SkPath inner;
|
| + clipCircle.addCircle(60, 60, 50); // <circle id="circle" cx="60" cy="60" r="50" />
|
| +
|
| + inner.addRect(10, 30, 10+0, 30+60); // <rect x="10" y="30" width="0" height="60" />
|
| + inner.addRect(10, 30, 10+0, 30+60); // <rect x="10" y="30" width="0" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+32668, 30+0); // <rect x="10" y="30" width="32668" />
|
| + inner.addRect(10, 30, 10+100, 30+18446744073709551615.f); // <rect x="10" y="30" width="100" height="18446744073709551615" />
|
| + inner.addRect(10, 255, 10+100, 255+60); // <rect x="10" y="255" width="100" height="60" />
|
| + inner.addRect(0, 0, 0+100, 0+60); // <rect width="100" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+4294967236.f); // <rect x="10" y="30" width="100" height="4294967236" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + clipRect.addPath(inner);
|
| + inner.reset();
|
| + inner.addRect(10, 30, 10+0, 30+60); // <rect x="10" y="30" width="0" height="60" />
|
| + inner.addRect(10, 30, 10+0, 30+0.18093252719929986369568203f); // <rect x="10" y="30" width="0" height="0.18093252719929986369568203" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+32668, 30+60); // <rect x="10" y="30" width="32668" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+18446744073709551615.f); // <rect x="10" y="30" width="100" height="18446744073709551615" />
|
| + inner.addRect(10, 255, 10+100, 255+60); // <rect x="10" y="255" width="100" height="60" />
|
| + inner.addRect(2147483649.f, 30, 2147483649.f+100, 30+60); // <rect x="2147483649" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + clipRect.addPath(inner);
|
| + inner.reset();
|
| + inner.addRect(10, 30, 10+0, 30+60); // <rect x="10" y="30" width="0" height="60" />
|
| + inner.addRect(10, 30, 10+0, 30+60); // <rect x="10" y="30" width="0" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+32668, 30+60); // <rect x="10" y="30" width="32668" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+18446744073709551615.f); // <rect x="10" y="30" width="100" height="18446744073709551615" />
|
| + inner.addRect(10, 255, 10+100, 255+60); // <rect x="10" y="255" width="100" height="60" />
|
| + inner.addRect(2147483649.f, 30, 2147483649.f+100, 30+60); // <rect x="2147483649" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(10, 2879753595.f, 10+100, 30+2879753595.f); // <rect x="10" y="2879753595" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + clipRect.addPath(inner);
|
| + inner.reset();
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+0, 30+60); // <rect x="10" y="30" width="0" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+32668, 30+60); // <rect x="10" y="30" width="32668" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+18446744073709551615.f); // <rect x="10" y="30" width="100" height="18446744073709551615" />
|
| + inner.addRect(10, 255, 10+100, 255+60); // <rect x="10" y="255" width="100" height="60" />
|
| + inner.addRect(2147483649.f, 30, 2147483649.f+100, 30+60); // <rect x="2147483649" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(10, 30, 10+100, 30+4294967236.f); // <rect x="10" y="30" width="100" height="4294967236" />
|
| + inner.addRect(10, 30, 10+100, 30+4294967236.f); // <rect x="10" y="30" width="100" height="4294967236" />
|
| + inner.addRect(10, 30, 10+100, 30+4294967236.f); // <rect x="10" y="30" width="100" height="4294967236" />
|
| + inner.addRect(10, 30, 10+100, 30+4294967236.f); // <rect x="10" y="30" width="100" height="4294967236" />
|
| + inner.addRect(10, 30, 10+100, 30+60); // <rect x="10" y="30" width="100" height="60" />
|
| + inner.addRect(757798030.f, 30, 757798030.f+100, 30+60); // <rect x="757798030" y="30" width="100" height="60" />
|
| + clipRect.addPath(inner);
|
| +
|
| + SkOpBuilder builder;
|
| + builder.add(clipCircle, kUnion_SkPathOp);
|
| + builder.add(clipRect, kDifference_SkPathOp);
|
| + SkPath result;
|
| + builder.resolve(&result);
|
| +}
|
| +
|
|
|