diff --git a/ChangeLog b/ChangeLog index 3ec73c697..5adf02ade 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-07-03 suzuki toshiya + + smooth: Exclude 16-bit system in invalid pitch/height check. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): + pitch and height are typed as FT_UInt but checked to fit + 16-bit range, to avoid the overflows. On 16-bit system, + this checking inserts a conditional that never occurs. + 2009-07-03 suzuki toshiya cff: Type large constants > 0x7FFF as long for 16-bit systems. diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c index 153cb1d88..31180be33 100644 --- a/src/smooth/ftsmooth.c +++ b/src/smooth/ftsmooth.c @@ -196,6 +196,10 @@ #endif +#if FT_UINT_MAX > 0xFFFFU + + /* if pitch or height is not FT_UInt, check must be enabled */ + if ( pitch > 0xFFFF || height > 0xFFFF ) { FT_ERROR(( "ft_smooth_render_generic: glyph too large: %d x %d\n", @@ -203,6 +207,8 @@ return Smooth_Err_Raster_Overflow; } +#endif + bitmap->pixel_mode = FT_PIXEL_MODE_GRAY; bitmap->num_grays = 256; bitmap->width = width;