| Index: src/psaux/t1decode.c
|
| diff --git a/src/psaux/t1decode.c b/src/psaux/t1decode.c
|
| index ea678412245768da4e2e6f31acb96ec8ea1a8da2..6ce370bfaaa1d2dd718967deac209550183e1daa 100644
|
| --- a/src/psaux/t1decode.c
|
| +++ b/src/psaux/t1decode.c
|
| @@ -4,7 +4,7 @@
|
| /* */
|
| /* PostScript Type 1 decoding routines (body). */
|
| /* */
|
| -/* Copyright 2000-2011 by */
|
| +/* Copyright 2000-2013 by */
|
| /* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
| /* */
|
| /* This file is part of the FreeType project, and may only be used, */
|
| @@ -205,7 +205,13 @@
|
| if ( decoder->seac )
|
| {
|
| FT_ERROR(( "t1operator_seac: invalid nested seac\n" ));
|
| - return PSaux_Err_Syntax_Error;
|
| + return FT_THROW( Syntax_Error );
|
| + }
|
| +
|
| + if ( decoder->builder.metrics_only )
|
| + {
|
| + FT_ERROR(( "t1operator_seac: unexpected seac\n" ));
|
| + return FT_THROW( Syntax_Error );
|
| }
|
|
|
| /* seac weirdness */
|
| @@ -222,7 +228,7 @@
|
| {
|
| FT_ERROR(( "t1operator_seac:"
|
| " glyph names table not available in this font\n" ));
|
| - return PSaux_Err_Syntax_Error;
|
| + return FT_THROW( Syntax_Error );
|
| }
|
|
|
| #ifdef FT_CONFIG_OPTION_INCREMENTAL
|
| @@ -243,7 +249,7 @@
|
| {
|
| FT_ERROR(( "t1operator_seac:"
|
| " invalid seac character code arguments\n" ));
|
| - return PSaux_Err_Syntax_Error;
|
| + return FT_THROW( Syntax_Error );
|
| }
|
|
|
| /* if we are trying to load a composite glyph, do not load the */
|
| @@ -409,7 +415,7 @@
|
| limit = zone->limit = charstring_base + charstring_len;
|
| ip = zone->cursor = zone->base;
|
|
|
| - error = PSaux_Err_Ok;
|
| + error = FT_Err_Ok;
|
|
|
| x = orig_x = builder->pos_x;
|
| y = orig_y = builder->pos_y;
|
| @@ -559,10 +565,10 @@
|
| goto Syntax_Error;
|
| }
|
|
|
| - value = (FT_Int32)( ( (FT_Long)ip[0] << 24 ) |
|
| - ( (FT_Long)ip[1] << 16 ) |
|
| - ( (FT_Long)ip[2] << 8 ) |
|
| - ip[3] );
|
| + value = (FT_Int32)( ( (FT_UInt32)ip[0] << 24 ) |
|
| + ( (FT_UInt32)ip[1] << 16 ) |
|
| + ( (FT_UInt32)ip[2] << 8 ) |
|
| + (FT_UInt32)ip[3] );
|
| ip += 4;
|
|
|
| /* According to the specification, values > 32000 or < -32000 must */
|
| @@ -585,7 +591,7 @@
|
| else
|
| {
|
| if ( !large_int )
|
| - value <<= 16;
|
| + value = (FT_Int32)( (FT_UInt32)value << 16 );
|
| }
|
|
|
| break;
|
| @@ -605,13 +611,13 @@
|
| }
|
|
|
| if ( ip[-2] < 251 )
|
| - value = ( ( (FT_Int32)ip[-2] - 247 ) << 8 ) + ip[-1] + 108;
|
| + value = ( ( ip[-2] - 247 ) * 256 ) + ip[-1] + 108;
|
| else
|
| - value = -( ( ( (FT_Int32)ip[-2] - 251 ) << 8 ) + ip[-1] + 108 );
|
| + value = -( ( ( ip[-2] - 251 ) * 256 ) + ip[-1] + 108 );
|
| }
|
|
|
| if ( !large_int )
|
| - value <<= 16;
|
| + value = (FT_Int32)( (FT_UInt32)value << 16 );
|
| }
|
| else
|
| {
|
| @@ -750,9 +756,9 @@
|
| decoder->flex_state = 1;
|
| decoder->num_flex_vectors = 0;
|
| if ( ( error = t1_builder_start_point( builder, x, y ) )
|
| - != PSaux_Err_Ok ||
|
| + != FT_Err_Ok ||
|
| ( error = t1_builder_check_points( builder, 6 ) )
|
| - != PSaux_Err_Ok )
|
| + != FT_Err_Ok )
|
| goto Fail;
|
| break;
|
|
|
| @@ -1123,7 +1129,7 @@
|
| FT_TRACE4(( "\n" ));
|
|
|
| /* return now! */
|
| - return PSaux_Err_Ok;
|
| + return FT_Err_Ok;
|
|
|
| case op_hsbw:
|
| FT_TRACE4(( " hsbw" ));
|
| @@ -1143,7 +1149,7 @@
|
| /* the glyph's metrics (lsb + advance width), not load the */
|
| /* rest of it; so exit immediately */
|
| if ( builder->metrics_only )
|
| - return PSaux_Err_Ok;
|
| + return FT_Err_Ok;
|
|
|
| break;
|
|
|
| @@ -1172,7 +1178,7 @@
|
| /* the glyph's metrics (lsb + advance width), not load the */
|
| /* rest of it; so exit immediately */
|
| if ( builder->metrics_only )
|
| - return PSaux_Err_Ok;
|
| + return FT_Err_Ok;
|
|
|
| break;
|
|
|
| @@ -1191,7 +1197,7 @@
|
| FT_TRACE4(( " hlineto" ));
|
|
|
| if ( ( error = t1_builder_start_point( builder, x, y ) )
|
| - != PSaux_Err_Ok )
|
| + != FT_Err_Ok )
|
| goto Fail;
|
|
|
| x += top[0];
|
| @@ -1213,9 +1219,9 @@
|
| FT_TRACE4(( " hvcurveto" ));
|
|
|
| if ( ( error = t1_builder_start_point( builder, x, y ) )
|
| - != PSaux_Err_Ok ||
|
| + != FT_Err_Ok ||
|
| ( error = t1_builder_check_points( builder, 3 ) )
|
| - != PSaux_Err_Ok )
|
| + != FT_Err_Ok )
|
| goto Fail;
|
|
|
| x += top[0];
|
| @@ -1231,7 +1237,7 @@
|
| FT_TRACE4(( " rlineto" ));
|
|
|
| if ( ( error = t1_builder_start_point( builder, x, y ) )
|
| - != PSaux_Err_Ok )
|
| + != FT_Err_Ok )
|
| goto Fail;
|
|
|
| x += top[0];
|
| @@ -1239,7 +1245,7 @@
|
|
|
| Add_Line:
|
| if ( ( error = t1_builder_add_point1( builder, x, y ) )
|
| - != PSaux_Err_Ok )
|
| + != FT_Err_Ok )
|
| goto Fail;
|
| break;
|
|
|
| @@ -1260,9 +1266,9 @@
|
| FT_TRACE4(( " rrcurveto" ));
|
|
|
| if ( ( error = t1_builder_start_point( builder, x, y ) )
|
| - != PSaux_Err_Ok ||
|
| + != FT_Err_Ok ||
|
| ( error = t1_builder_check_points( builder, 3 ) )
|
| - != PSaux_Err_Ok )
|
| + != FT_Err_Ok )
|
| goto Fail;
|
|
|
| x += top[0];
|
| @@ -1282,9 +1288,9 @@
|
| FT_TRACE4(( " vhcurveto" ));
|
|
|
| if ( ( error = t1_builder_start_point( builder, x, y ) )
|
| - != PSaux_Err_Ok ||
|
| + != FT_Err_Ok ||
|
| ( error = t1_builder_check_points( builder, 3 ) )
|
| - != PSaux_Err_Ok )
|
| + != FT_Err_Ok )
|
| goto Fail;
|
|
|
| y += top[0];
|
| @@ -1300,7 +1306,7 @@
|
| FT_TRACE4(( " vlineto" ));
|
|
|
| if ( ( error = t1_builder_start_point( builder, x, y ) )
|
| - != PSaux_Err_Ok )
|
| + != FT_Err_Ok )
|
| goto Fail;
|
|
|
| y += top[0];
|
| @@ -1539,10 +1545,10 @@
|
| return error;
|
|
|
| Syntax_Error:
|
| - return PSaux_Err_Syntax_Error;
|
| + return FT_THROW( Syntax_Error );
|
|
|
| Stack_Underflow:
|
| - return PSaux_Err_Stack_Underflow;
|
| + return FT_THROW( Stack_Underflow );
|
| }
|
|
|
|
|
| @@ -1579,7 +1585,7 @@
|
| {
|
| FT_ERROR(( "t1_decoder_init:"
|
| " the `psnames' module is not available\n" ));
|
| - return PSaux_Err_Unimplemented_Feature;
|
| + return FT_THROW( Unimplemented_Feature );
|
| }
|
|
|
| decoder->psnames = psnames;
|
| @@ -1599,7 +1605,7 @@
|
|
|
| decoder->funcs = t1_decoder_funcs;
|
|
|
| - return PSaux_Err_Ok;
|
| + return FT_Err_Ok;
|
| }
|
|
|
|
|
|
|