diff --git a/ChangeLog b/ChangeLog index 87725214b..1d4ba8e2f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2010-01-08 Ken Sharp + + Fix Savannah bug #28521. + + Issue #28226 involved a work-around for a font which used the + `setcurrentpoint' operator in an invalid way; this operator is only + supposed to be used with the result of OtherSubrs, and the font used + it directly. The supplied patch removed the block of code which + checked this usage entirely. + + This turns out to be a Bad Thing. If `setcurrentpoint' is being + used correctly it should reset the flex flag in the decoder. If we + don't do this then the flag never gets reset and we omit any further + contours from the glyph (at least until we close the path or + similar). + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Handle `flex_state' correctly. + 2010-01-05 Werner Lemberg Apply reports from clang static analyzer. @@ -134,6 +153,9 @@ initial point to (0,0). Unnecessarily so, as they correctly use an `hsbw' operation which implicitly sets the initial point. + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Comment out code. + 2009-12-14 Bram Tassyns Fix parsing of /CIDFontVersion. diff --git a/src/psaux/t1decode.c b/src/psaux/t1decode.c index 2b535b090..31554ff1b 100644 --- a/src/psaux/t1decode.c +++ b/src/psaux/t1decode.c @@ -1459,7 +1459,6 @@ case op_setcurrentpoint: FT_TRACE4(( " setcurrentpoint" )); -#if 0 /* From the T1 specification, section 6.4: */ /* */ /* The setcurrentpoint command is used only in */ @@ -1472,6 +1471,7 @@ /* Distiller handle this situation by silently ignoring */ /* the inappropriate `setcurrentpoint' instruction. So */ /* we do the same. */ +#if 0 if ( decoder->flex_state != 1 ) { @@ -1480,8 +1480,8 @@ goto Syntax_Error; } else - decoder->flex_state = 0; #endif + decoder->flex_state = 0; break; case op_unknown15: