Uff, another thinko.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
diff --git a/ChangeLog b/ChangeLog
index df11d1b..ffa116e 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 <wl@gnu.org>
diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c
index 2a982f4..7074160 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 39b5c8b..adb0c6f 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" ));