From 70e9d81577c0dec3196324693cd77eb93aa695e5 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Sun, 2 Aug 2015 09:42:12 +0200 Subject: [PATCH] Fix more invalid left-shifts. * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication, not left-shift. * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar, tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication, not left-shift. --- ChangeLog | 11 +++++++++++ src/pfr/pfrgload.c | 4 ++-- src/truetype/ttgxvar.c | 18 +++++++++--------- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index efb8dd08f..024544c46 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2015-08-02 Werner Lemberg + + Fix more invalid left-shifts. + + * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication, + not left-shift. + + * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar, + tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication, + not left-shift. + 2015-07-31 Werner Lemberg Fix some bugs found by clang's `-fsanitize=undefined' (#45661). diff --git a/src/pfr/pfrgload.c b/src/pfr/pfrgload.c index 1cd13c202..88df06a03 100644 --- a/src/pfr/pfrgload.c +++ b/src/pfr/pfrgload.c @@ -632,14 +632,14 @@ if ( format & PFR_SUBGLYPH_XSCALE ) { PFR_CHECK( 2 ); - subglyph->x_scale = PFR_NEXT_SHORT( p ) << 4; + subglyph->x_scale = PFR_NEXT_SHORT( p ) * 16; } subglyph->y_scale = 0x10000L; if ( format & PFR_SUBGLYPH_YSCALE ) { PFR_CHECK( 2 ); - subglyph->y_scale = PFR_NEXT_SHORT( p ) << 4; + subglyph->y_scale = PFR_NEXT_SHORT( p ) * 16; } /* read offset */ diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c index 7a8c46c27..dd9e250c9 100644 --- a/src/truetype/ttgxvar.c +++ b/src/truetype/ttgxvar.c @@ -357,8 +357,8 @@ for ( j = 0; j < segment->pairCount; j++ ) { /* convert to Fixed */ - segment->correspondence[j].fromCoord = FT_GET_SHORT() << 2; - segment->correspondence[j].toCoord = FT_GET_SHORT() << 2; + segment->correspondence[j].fromCoord = FT_GET_SHORT() * 4; + segment->correspondence[j].toCoord = FT_GET_SHORT() * 4; FT_TRACE5(( " mapping %.4f to %.4f\n", segment->correspondence[j].fromCoord / 65536.0, @@ -514,7 +514,7 @@ for ( j = 0 ; j < (FT_UInt)gvar_head.axisCount; j++ ) { blend->tuplecoords[i * gvar_head.axisCount + j] = - FT_GET_SHORT() << 2; /* convert to FT_Fixed */ + FT_GET_SHORT() * 4; /* convert to FT_Fixed */ FT_TRACE5(( "%.4f ", blend->tuplecoords[i * gvar_head.axisCount + j] / 65536.0 )); } @@ -1379,7 +1379,7 @@ if ( tupleIndex & GX_TI_EMBEDDED_TUPLE_COORD ) { for ( j = 0; j < blend->num_axis; j++ ) - tuple_coords[j] = FT_GET_SHORT() << 2; /* convert from */ + tuple_coords[j] = FT_GET_SHORT() * 4; /* convert from */ /* short frac to fixed */ } else @@ -1397,9 +1397,9 @@ if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) { for ( j = 0; j < blend->num_axis; j++ ) - im_start_coords[j] = FT_GET_SHORT() << 2; + im_start_coords[j] = FT_GET_SHORT() * 4; for ( j = 0; j < blend->num_axis; j++ ) - im_end_coords[j] = FT_GET_SHORT() << 2; + im_end_coords[j] = FT_GET_SHORT() * 4; } apply = ft_var_apply_tuple( blend, @@ -1850,7 +1850,7 @@ if ( tupleIndex & GX_TI_EMBEDDED_TUPLE_COORD ) { for ( j = 0; j < blend->num_axis; j++ ) - tuple_coords[j] = FT_GET_SHORT() << 2; /* convert from */ + tuple_coords[j] = FT_GET_SHORT() * 4; /* convert from */ /* short frac to fixed */ } else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) >= blend->tuplecount ) @@ -1867,9 +1867,9 @@ if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) { for ( j = 0; j < blend->num_axis; j++ ) - im_start_coords[j] = FT_GET_SHORT() << 2; + im_start_coords[j] = FT_GET_SHORT() * 4; for ( j = 0; j < blend->num_axis; j++ ) - im_end_coords[j] = FT_GET_SHORT() << 2; + im_end_coords[j] = FT_GET_SHORT() * 4; } apply = ft_var_apply_tuple( blend,