diff options
author | suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> | 2009-07-03 18:01:34 +0900 |
---|---|---|
committer | suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> | 2009-07-03 18:01:34 +0900 |
commit | de9c435bc14485b0e242ae0fcffe30bc8f6a1913 (patch) | |
tree | f08f2c15f1328c843a96dcbf01ad29f4e1c3623d | |
parent | 009c39c1d99da8248215a3421f61981fbb856b51 (diff) | |
download | freetype2-de9c435bc14485b0e242ae0fcffe30bc8f6a1913.tar.gz |
truetype: Cast the numerical operands to 32-bit for LP64 systems.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | src/truetype/ttinterp.c | 18 |
2 files changed, 19 insertions, 8 deletions
@@ -1,5 +1,14 @@ 2009-07-03 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + truetype: Cast the numerical operands to 32-bit for LP64 systems. + + * src/truetype/ttinterp.c (Ins_SPHIX, INS_MIAP, + Ins_MIRP): Insert cast from long (args[], the + operands passed to TrueType operator) to FT_Int32 + (the argument of TT_MulFix14()). + +2009-07-03 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + truetype: Cast the project vector to 32-bit for LP64 system. * src/truetype/ttinterp.c (Project, DualProject): diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c index 3904c43cc..e6a0700a4 100644 --- a/src/truetype/ttinterp.c +++ b/src/truetype/ttinterp.c @@ -5527,20 +5527,20 @@ { if ( CUR.GS.both_x_axis ) { - dx = TT_MulFix14( args[0], 0x4000 ); + dx = TT_MulFix14( (FT_UInt32)args[0], 0x4000 ); dy = 0; } else { dx = 0; - dy = TT_MulFix14( args[0], 0x4000 ); + dy = TT_MulFix14( (FT_UInt32)args[0], 0x4000 ); } } else #endif { - dx = TT_MulFix14( args[0], CUR.GS.freeVector.x ); - dy = TT_MulFix14( args[0], CUR.GS.freeVector.y ); + dx = TT_MulFix14( (FT_UInt32)args[0], CUR.GS.freeVector.x ); + dy = TT_MulFix14( (FT_UInt32)args[0], CUR.GS.freeVector.y ); } while ( CUR.GS.loop > 0 ) @@ -5706,8 +5706,8 @@ if ( CUR.GS.gep0 == 0 ) /* If in twilight zone */ { - CUR.zp0.org[point].x = TT_MulFix14( distance, CUR.GS.freeVector.x ); - CUR.zp0.org[point].y = TT_MulFix14( distance, CUR.GS.freeVector.y ), + CUR.zp0.org[point].x = TT_MulFix14( (FT_UInt32)distance, CUR.GS.freeVector.x ); + CUR.zp0.org[point].y = TT_MulFix14( (FT_UInt32)distance, CUR.GS.freeVector.y ), CUR.zp0.cur[point] = CUR.zp0.org[point]; } @@ -5894,10 +5894,12 @@ if ( CUR.GS.gep1 == 0 ) { CUR.zp1.org[point].x = CUR.zp0.org[CUR.GS.rp0].x + - TT_MulFix14( cvt_dist, CUR.GS.freeVector.x ); + TT_MulFix14( (FT_UInt32)cvt_dist, + CUR.GS.freeVector.x ); CUR.zp1.org[point].y = CUR.zp0.org[CUR.GS.rp0].y + - TT_MulFix14( cvt_dist, CUR.GS.freeVector.y ); + TT_MulFix14( (FT_UInt32)cvt_dist, + CUR.GS.freeVector.y ); CUR.zp1.cur[point] = CUR.zp0.cur[point]; } |