[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.
This commit is contained in:
Werner Lemberg 2015-02-20 20:42:55 +01:00
parent 2bf03eb729
commit c00b05f202
3 changed files with 17 additions and 5 deletions

View File

@ -1,3 +1,13 @@
2015-02-20 Werner Lemberg <wl@gnu.org>
[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 <wl@gnu.org> 2015-02-20 Werner Lemberg <wl@gnu.org>
[cid] Fix signedness issues and emit some better error codes. [cid] Fix signedness issues and emit some better error codes.

View File

@ -337,7 +337,7 @@
/* */ /* */
/* <Return> */ /* <Return> */
/* The bias value. */ /* The bias value. */
static FT_UInt static FT_Int
cff_compute_bias( FT_Int in_charstring_type, cff_compute_bias( FT_Int in_charstring_type,
FT_UInt num_subrs ) FT_UInt num_subrs )
{ {
@ -2385,7 +2385,8 @@
case cff_op_callsubr: 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 )); FT_TRACE4(( " callsubr(%d)\n", idx ));
@ -2426,7 +2427,8 @@
case cff_op_callgsubr: 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 )); FT_TRACE4(( " callgsubr(%d)\n", idx ));

View File

@ -178,8 +178,8 @@ FT_BEGIN_HEADER
FT_UInt num_locals; FT_UInt num_locals;
FT_UInt num_globals; FT_UInt num_globals;
FT_UInt locals_bias; FT_Int locals_bias;
FT_UInt globals_bias; FT_Int globals_bias;
FT_Byte** locals; FT_Byte** locals;
FT_Byte** globals; FT_Byte** globals;