diff --git a/ChangeLog b/ChangeLog index df11d1bf4..ffa116ea9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,9 +5,8 @@ * include/freetype/internal/psaux.h (T1_Decoder), src/cff/cffgload.h (CFF_Decoder): Add `seac' boolean variable. - * src/cff/cffgload.c (cff_operator_seac, - cff_decoder_parse_charstrings), src/psaux/t1decode.c - (t1operator_seac, t1_decoder_parse_charstrings): Use it. + * src/cff/cffgload.c (cff_operator_seac), src/psaux/t1decode.c + (t1operator_seac): Use it. 2009-06-28 Werner Lemberg diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c index 2a982f40a..70741609f 100644 --- a/src/cff/cffgload.c +++ b/src/cff/cffgload.c @@ -783,8 +783,11 @@ &charstring, &charstring_len ); if ( !error ) { + /* the seac operator must not be nested */ + decoder->seac = TRUE; error = cff_decoder_parse_charstrings( decoder, charstring, charstring_len ); + decoder->seac = FALSE; if ( error ) goto Exit; @@ -809,8 +812,11 @@ &charstring, &charstring_len ); if ( !error ) { + /* the seac operator must not be nested */ + decoder->seac = TRUE; error = cff_decoder_parse_charstrings( decoder, charstring, charstring_len ); + decoder->seac = FALSE; if ( error ) goto Exit; @@ -1889,14 +1895,11 @@ FT_Pos glyph_width = decoder->glyph_width; - /* the seac operator must not be nested */ - decoder->seac = TRUE; error = cff_operator_seac( decoder, args[-4], args[-3], (FT_Int)( args[-2] >> 16 ), (FT_Int)( args[-1] >> 16 ) ); - decoder->seac = FALSE; decoder->glyph_width = glyph_width; } diff --git a/src/psaux/t1decode.c b/src/psaux/t1decode.c index 39b5c8b96..adb0c6f20 100644 --- a/src/psaux/t1decode.c +++ b/src/psaux/t1decode.c @@ -282,7 +282,10 @@ FT_GlyphLoader_Prepare( decoder->builder.loader ); /* prepare loader */ + /* the seac operator must not be nested */ + decoder->seac = TRUE; error = t1_decoder_parse_glyph( decoder, bchar_index ); + decoder->seac = FALSE; if ( error ) goto Exit; @@ -300,7 +303,11 @@ /* Now load `achar' on top of */ /* the base outline */ + + /* the seac operator must not be nested */ + decoder->seac = TRUE; error = t1_decoder_parse_glyph( decoder, achar_index ); + decoder->seac = FALSE; if ( error ) goto Exit; @@ -1125,18 +1132,12 @@ break; case op_seac: - /* the seac operator must not be nested */ - decoder->seac = TRUE; - error = t1operator_seac( decoder, - top[0], - top[1], - top[2], - (FT_Int)( top[3] >> 16 ), - (FT_Int)( top[4] >> 16 ) ); - decoder->seac = FALSE; - - /* return immediately after the processing */ - return error; + return t1operator_seac( decoder, + top[0], + top[1], + top[2], + (FT_Int)( top[3] >> 16 ), + (FT_Int)( top[4] >> 16 ) ); case op_sbw: FT_TRACE4(( " sbw" ));