[base, truetype] Silence UBSAN.
* src/truetype/ttinterp.c (TT_MulFix14_64): Use unsigned multiplication.
* include/freetype/internal/ftcalc.h (FT_MulFix_64): Ditto.
diff --git a/include/freetype/internal/ftcalc.h b/include/freetype/internal/ftcalc.h
index 6be506c..1024cdb 100644
--- a/include/freetype/internal/ftcalc.h
+++ b/include/freetype/internal/ftcalc.h
@@ -41,7 +41,7 @@
FT_MulFix_64( FT_Long a,
FT_Long b )
{
- FT_Int64 ab = (FT_Int64)a * b;
+ FT_Int64 ab = (FT_Int64)( (FT_UInt64)a * (FT_UInt64)b );
ab += 0x8000 + ( ab >> 63 ); /* rounding phase */
diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c
index 0300c42..b74f0c2 100644
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -1168,7 +1168,7 @@
TT_MulFix14_64( FT_F26Dot6 a,
FT_F2Dot14 b )
{
- FT_Int64 ab = (FT_Int64)a * b;
+ FT_Int64 ab = (FT_Int64)( (FT_UInt64)a * (FT_UInt64)b );
ab += 0x2000 + ( ab >> 63 ); /* rounding phase */