From 3f64708818ffce26255fed1fb350acf0d4a45567 Mon Sep 17 00:00:00 2001 From: Michael Karcher Date: Mon, 30 Jun 2008 00:23:07 +0200 Subject: [PATCH] gdi32: Fix double->fixpoint conversion in freetype.c. --- dlls/gdi32/freetype.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c index 731b1c58706..4fe468c509d 100644 --- a/dlls/gdi32/freetype.c +++ b/dlls/gdi32/freetype.c @@ -803,15 +803,12 @@ static inline BOOL is_win9x(void) return GetVersion() & 0x80000000; } /* - This function builds an FT_Fixed from a float. It puts the integer part - in the highest 16 bits and the decimal part in the lowest 16 bits of the FT_Fixed. - It fails if the integer part of the float number is greater than SHORT_MAX. + This function builds an FT_Fixed from a double. It fails if the absolute + value of the float number is greater than 32768. */ static inline FT_Fixed FT_FixedFromFloat(double f) { - short value = f; - unsigned short fract = (f - value) * 0xFFFF; - return (FT_Fixed)((long)value << 16 | (unsigned long)fract); + return f * 0x10000; } /*