diff options
author | marha <marha@users.sourceforge.net> | 2010-08-06 11:48:36 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2010-08-06 11:48:36 +0000 |
commit | 20ff8ddf2d9bb41050d10bbc75d61b9161880c7c (patch) | |
tree | 22566fcd9663b2baa565cd0c64eaa662d6ba03ee /freetype/src/cff/cffparse.c | |
parent | c29011f2831315d3da9c4727c1e626d80520b97a (diff) | |
parent | 6849d83857b4e470a44ad8b6aa5cfb283fd64c89 (diff) | |
download | vcxsrv-20ff8ddf2d9bb41050d10bbc75d61b9161880c7c.tar.gz vcxsrv-20ff8ddf2d9bb41050d10bbc75d61b9161880c7c.tar.bz2 vcxsrv-20ff8ddf2d9bb41050d10bbc75d61b9161880c7c.zip |
svn merge ^/branches/released .
Diffstat (limited to 'freetype/src/cff/cffparse.c')
-rw-r--r-- | freetype/src/cff/cffparse.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/freetype/src/cff/cffparse.c b/freetype/src/cff/cffparse.c index 38ba7d88f..fdb9b298f 100644 --- a/freetype/src/cff/cffparse.c +++ b/freetype/src/cff/cffparse.c @@ -4,7 +4,7 @@ /* */ /* CFF token stream parser (body) */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2007, 2008, 2009 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2007, 2008, 2009, 2010 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -137,26 +137,23 @@ FT_UInt nib; FT_UInt phase; - FT_Long result, number, rest, exponent; + FT_Long result, number, exponent; FT_Int sign = 0, exponent_sign = 0; FT_Long exponent_add, integer_length, fraction_length; if ( scaling ) - *scaling = 0; + *scaling = 0; result = 0; number = 0; - rest = 0; exponent = 0; exponent_add = 0; integer_length = 0; fraction_length = 0; - FT_UNUSED( rest ); - /* First of all, read the integer part. */ phase = 4; @@ -332,11 +329,19 @@ goto Exit; /* Remove non-significant digits. */ - if ( integer_length < 0 ) { + if ( integer_length < 0 ) + { number /= power_tens[-integer_length]; fraction_length += integer_length; } + /* this can only happen if exponent was non-zero */ + if ( fraction_length == 10 ) + { + number /= 10; + fraction_length -= 1; + } + /* Convert into 16.16 format. */ if ( fraction_length > 0 ) { @@ -702,7 +707,7 @@ clazz[i].count_offset = 0; *output_class = clazz; - return FT_Err_Ok; + return CFF_Err_Ok; } |