diff options
Diffstat (limited to 'src/pathops/SkPathOpsCubic.cpp')
-rw-r--r-- | src/pathops/SkPathOpsCubic.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/pathops/SkPathOpsCubic.cpp b/src/pathops/SkPathOpsCubic.cpp index 6b74fb00ef..a161e368e7 100644 --- a/src/pathops/SkPathOpsCubic.cpp +++ b/src/pathops/SkPathOpsCubic.cpp @@ -419,7 +419,8 @@ int SkDCubic::RootsReal(double A, double B, double C, double D, double s[3]) { double r; double* roots = s; if (R2MinusQ3 < 0) { // we have 3 real roots - double theta = acos(R / sqrt(Q3)); + // the divide/root can, due to finite precisions, be slightly outside of -1...1 + double theta = acos(SkTPin(R / sqrt(Q3), -1., 1.)); double neg2RootQ = -2 * sqrt(Q); r = neg2RootQ * cos(theta / 3) - adiv3; |