* src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve.

This commit is contained in:
Alexei Podtelezhnikov 2015-09-13 23:19:34 -04:00
parent 7962a15d64
commit 3ea0d2c65a
2 changed files with 7 additions and 15 deletions

View File

@ -1,3 +1,7 @@
2015-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
* src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve.
2015-09-14 Werner Lemberg <wl@gnu.org>
[type1] Fix another potential buffer overflow (#45955).

View File

@ -237,22 +237,10 @@
#else
FT_Int s = 1;
FT_UInt64 a, b, c;
FT_Long c_;
FT_Int64 ab = (FT_Int64)a_ * (FT_Int64)b_;
FT_MOVE_SIGN( a_, s );
FT_MOVE_SIGN( b_, s );
a = (FT_UInt64)a_;
b = (FT_UInt64)b_;
c = ( a * b + 0x8000UL ) >> 16;
c_ = (FT_Long)c;
return s < 0 ? -c_ : c_;
/* this requires arithmetic right shift of signed numbers */
return (FT_Long)( ( ab + 0x8000L - ( ab < 0 ) ) >> 16 );
#endif /* FT_MULFIX_ASSEMBLER */
}