shithub: freetype+ttf2subf

Download patch

ref: c00b05f2028a91bf41fe7f33c3254ecad81a5d58
parent: 2bf03eb7296dc7ebb97b24fe3957a2e33c9672df
author: Werner Lemberg <[email protected]>
date: Fri Feb 20 15:42:55 EST 2015

[cff] Thinkos in bias handling.

Only the final result is always positive.

Bug introduced three commits earlier.

* src/cff/cffgload.c, src/cff/cffgload.h: Apply.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2015-02-20  Werner Lemberg  <[email protected]>
 
+	[cff] Thinkos in bias handling.
+
+	Only the final result is always positive.
+
+	Bug introduced three commits earlier.
+
+	* src/cff/cffgload.c, src/cff/cffgload.h: Apply.
+
+2015-02-20  Werner Lemberg  <[email protected]>
+
 	[cid] Fix signedness issues and emit some better error codes.
 
 	* src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c,
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -337,7 +337,7 @@
   /*                                                                       */
   /* <Return>                                                              */
   /*    The bias value.                                                    */
-  static FT_UInt
+  static FT_Int
   cff_compute_bias( FT_Int   in_charstring_type,
                     FT_UInt  num_subrs )
   {
@@ -2385,7 +2385,8 @@
 
         case cff_op_callsubr:
           {
-            FT_UInt  idx = ( (FT_UInt)args[0] >> 16 ) + decoder->locals_bias;
+            FT_UInt  idx = (FT_UInt)( ( args[0] >> 16 ) +
+                                      decoder->locals_bias );
 
 
             FT_TRACE4(( " callsubr(%d)\n", idx ));
@@ -2426,7 +2427,8 @@
 
         case cff_op_callgsubr:
           {
-            FT_UInt  idx = ( (FT_UInt)args[0] >> 16 ) + decoder->globals_bias;
+            FT_UInt  idx = (FT_UInt)( ( args[0] >> 16 ) +
+                                      decoder->globals_bias );
 
 
             FT_TRACE4(( " callgsubr(%d)\n", idx ));
--- a/src/cff/cffgload.h
+++ b/src/cff/cffgload.h
@@ -178,8 +178,8 @@
     FT_UInt            num_locals;
     FT_UInt            num_globals;
 
-    FT_UInt            locals_bias;
-    FT_UInt            globals_bias;
+    FT_Int             locals_bias;
+    FT_Int             globals_bias;
 
     FT_Byte**          locals;
     FT_Byte**          globals;