$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];
