ref: 3212852ccea98e0e8eb7188e8b5cb07f26f64fce
parent: 125c3ca8f0a9646995375fd63b7b3ea48e957942
author: Alexei Podtelezhnikov <[email protected]>
date: Wed Sep 3 17:57:42 EDT 2014
[base] Tighten the overflow check in `FT_MulFix'. * src/base/ftcalc.c (FT_MulFix) [!FT_LONG64]: Updated.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2014-09-03 Alexei Podtelezhnikov <[email protected]>
+
+ [base] Tighten the overflow check in `FT_MulFix'.
+
+ * src/base/ftcalc.c (FT_MulFix) [!FT_LONG64]: Updated.
+
2014-09-02 Alexei Podtelezhnikov <[email protected]>
[truetype] Shortcut ppem calculations for square pixels.
--- a/src/base/ftcalc.c
+++ b/src/base/ftcalc.c
@@ -394,7 +394,8 @@
/* */
/* a + (b >> 8) <= (131071 >> 4) */
/* */
- /* should work well to avoid the overflow. */
+ /* covers the practical range of use. The actual test below is a bit */
+ /* tighter to avoid the border case overflows. */
/* */
/* documentation is in freetype.h */
@@ -524,7 +525,7 @@
ua = (FT_ULong)a;
ub = (FT_ULong)b;
- if ( ua + ( ub >> 8 ) <= 8191UL )
+ if ( ua + ( ub >> 8 ) <= 8190UL )
ua = ( ua * ub + 0x8000U ) >> 16;
else
{
@@ -555,7 +556,7 @@
ua = (FT_ULong)a;
ub = (FT_ULong)b;
- if ( ua + ( ub >> 8 ) <= 8191UL )
+ if ( ua + ( ub >> 8 ) <= 8190UL )
ua = ( ua * ub + 0x8000UL ) >> 16;
else
{