shithub: freetype+ttf2subf

Download patch

ref: de3b5c201ca52e6558c21b09012d9faa1bfd1722
parent: f0f00f7c1648daa9b75e7ea97b9f84b78d8a6d9c
author: Alexei Podtelezhnikov <apodtele@gmail.com>
date: Fri Aug 20 09:51:40 EDT 2021

[smooth] Fortify 64-bit algorithm.

* src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): s/long/FT_Int64/ and
s/unsigned long/FT_UInt64/.
(gray_render_line): Adjust a critical variable type.

git/fs: mount .git/fs: mount/attach disallowed
--- a/src/smooth/ftgrays.c
+++ b/src/smooth/ftgrays.c
@@ -375,12 +375,12 @@
 
   /* These macros speed up repetitive divisions by replacing them */
   /* with multiplications and right shifts.                       */
-#define FT_UDIVPREP( c, b )                                        \
-  long  b ## _r = c ? (long)( FT_ULONG_MAX >> PIXEL_BITS ) / ( b ) \
+#define FT_UDIVPREP( c, b )                                                 \
+  FT_Int64  b ## _r = c ? (FT_Int64)( ~(FT_UInt64)0 >> PIXEL_BITS ) / ( b ) \
                     : 0
-#define FT_UDIV( a, b )                                                \
-  (TCoord)( ( (unsigned long)( a ) * (unsigned long)( b ## _r ) ) >>   \
-            ( sizeof( long ) * FT_CHAR_BIT - PIXEL_BITS ) )
+#define FT_UDIV( a, b )                                         \
+  (TCoord)( ( (FT_UInt64)( a ) * (FT_UInt64)( b ## _r ) ) >>    \
+            ( sizeof( FT_UInt64 ) * FT_CHAR_BIT - PIXEL_BITS ) )
 
 
   /* Scale area and apply fill rule to calculate the coverage byte. */
@@ -921,7 +921,7 @@
     }
     else                                  /* any other line */
     {
-      TPos  prod = dx * (TPos)fy1 - dy * (TPos)fx1;
+      FT_Int64  prod = dx * (FT_Int64)fy1 - dy * (FT_Int64)fx1;
       FT_UDIVPREP( ex1 != ex2, dx );
       FT_UDIVPREP( ey1 != ey2, dy );