From f0987abdc24b136100656f49ecfe3997869cd93d Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Thu, 28 Oct 2010 08:33:28 +0200 Subject: [PATCH] [ftraster] Fix rendering. Problem reported by Tom Bishop ; see thread starting with http://lists.gnu.org/archive/html/freetype/2010-10/msg00049.html * src/raster/ftraster.c (Line_Up): Replace FMulDiv with SMulDiv since the involved multiplication exceeds 32 bits. --- ChangeLog | 12 ++++++++++++ src/raster/ftraster.c | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8ce055fc0..520326513 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2010-10-28 Werner Lemberg + + [ftraster] Fix rendering. + + Problem reported by Tom Bishop ; see + thread starting with + + http://lists.gnu.org/archive/html/freetype/2010-10/msg00049.html + + * src/raster/ftraster.c (Line_Up): Replace FMulDiv with SMulDiv + since the involved multiplication exceeds 32 bits. + 2010-10-25 suzuki toshiya Revert a change of `_idx' type in FTC_CACHE_LOOKUP_CMP(). diff --git a/src/raster/ftraster.c b/src/raster/ftraster.c index 4050cdc36..aa5120810 100644 --- a/src/raster/ftraster.c +++ b/src/raster/ftraster.c @@ -1094,7 +1094,7 @@ return SUCCESS; else { - x1 += FMulDiv( Dx, ras.precision - f1, Dy ); + x1 += SMulDiv( Dx, ras.precision - f1, Dy ); e1 += 1; } } @@ -1122,13 +1122,13 @@ if ( Dx > 0 ) { - Ix = SMulDiv( ras.precision, Dx, Dy); + Ix = SMulDiv( ras.precision, Dx, Dy); Rx = ( ras.precision * Dx ) % Dy; Dx = 1; } else { - Ix = SMulDiv( ras.precision, -Dx, Dy) * -1; + Ix = SMulDiv( ras.precision, -Dx, Dy) * -1; Rx = ( ras.precision * -Dx ) % Dy; Dx = -1; }