$NetBSD: patch-ap,v 1.2 2009/11/20 15:59:59 drochner Exp $ https://bugs.freedesktop.org/show_bug.cgi?id=25189 --- poppler/Gfx.cc.orig 2009-10-23 21:44:04.000000000 +0200 +++ poppler/Gfx.cc @@ -2367,7 +2367,7 @@ static void bubbleSort(double array[]) void Gfx::doAxialShFill(GfxAxialShading *shading) { double xMin, yMin, xMax, yMax; double x0, y0, x1, y1; - double dx, dy, mul; + double dx, dy, len2; GBool dxZero, dyZero; double bboxIntersections[4]; double tMin, tMax, tx, ty; @@ -2389,16 +2389,18 @@ void Gfx::doAxialShFill(GfxAxialShading shading->getCoords(&x0, &y0, &x1, &y1); dx = x1 - x0; dy = y1 - y0; - dxZero = fabs(dx) < 0.01; - dyZero = fabs(dy) < 0.01; - if (dxZero && dyZero) { - tMin = tMax = 0; + dxZero = (dx == 0.0); + dyZero = (dy == 0.0); + len2 = dx * dx + dy * dy; + if (len2 == 0.0) { + /* invalid? */ + tMin = 0; + tMax = 1; } else { - mul = 1 / (dx * dx + dy * dy); - bboxIntersections[0] = ((xMin - x0) * dx + (yMin - y0) * dy) * mul; - bboxIntersections[1] = ((xMin - x0) * dx + (yMax - y0) * dy) * mul; - bboxIntersections[2] = ((xMax - x0) * dx + (yMin - y0) * dy) * mul; - bboxIntersections[3] = ((xMax - x0) * dx + (yMax - y0) * dy) * mul; + bboxIntersections[0] = ((xMin - x0) * dx + (yMin - y0) * dy) / len2; + bboxIntersections[1] = ((xMin - x0) * dx + (yMax - y0) * dy) / len2; + bboxIntersections[2] = ((xMax - x0) * dx + (yMin - y0) * dy) / len2; + bboxIntersections[3] = ((xMax - x0) * dx + (yMax - y0) * dy) / len2; bubbleSort(bboxIntersections); tMin = bboxIntersections[0]; tMax = bboxIntersections[3];