Commit 7baeeafcec7fd2267191937e14c1f753424beb89

Ken Sharp 2010-04-05T11:19:38

Fix Savannah bug #29335. * src/raster/ftraster.c (Line_Up): Use slow multiplication to prevent overflow. This shouldn't have any serious impact on speed, however.

diff --git a/ChangeLog b/ChangeLog
index a8fa18f..c22e570 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-04-05  Ken Sharp  <ken.sharp@artifex.com>
+
+	Fix Savannah bug #29335.
+
+	* src/raster/ftraster.c (Line_Up): Use slow multiplication to
+	prevent overflow.  This shouldn't have any serious impact on speed,
+	however.
+
 2010-04-05  Werner Lemberg  <wl@gnu.org>
 
 	Add new function `FT_Library_SetLcdFilterWeights'.
diff --git a/src/raster/ftraster.c b/src/raster/ftraster.c
index 86d11d8..cdde471 100644
--- a/src/raster/ftraster.c
+++ b/src/raster/ftraster.c
@@ -1122,13 +1122,13 @@
 
     if ( Dx > 0 )
     {
-      Ix = ( ras.precision * Dx ) / Dy;
+      Ix = SMulDiv( ras.precision, Dx,  Dy);
       Rx = ( ras.precision * Dx ) % Dy;
       Dx = 1;
     }
     else
     {
-      Ix = -( ( ras.precision * -Dx ) / Dy );
+      Ix = SMulDiv( ras.precision, -Dx,  Dy) * -1;
       Rx =    ( ras.precision * -Dx ) % Dy;
       Dx = -1;
     }