From 8ce3026304d3167c1f7b6b36d75a139050145b11 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Fri, 27 Mar 2015 08:33:47 +0100 Subject: [PATCH] [cff] Trace charstring nesting levels. * src/cff/cf2intrp.c (cf2_interpT2CharString) : Implement it. * src/cff/cffgload.c (cff_decoder_parse_charstrings) : Ditto. --- ChangeLog | 10 ++++++++++ src/cff/cf2intrp.c | 12 +++++++----- src/cff/cffgload.c | 11 ++++++++--- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7a4e3b244..7d58921dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2015-03-27 Werner Lemberg + + [cff] Trace charstring nesting levels. + + * src/cff/cf2intrp.c (cf2_interpT2CharString) : Implement it. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Ditto. + 2015-03-21 Alexei Podtelezhnikov [base] Optimize `FT_Angle_Diff'. diff --git a/src/cff/cf2intrp.c b/src/cff/cf2intrp.c index 5ee4e5595..d7f7a7b78 100644 --- a/src/cff/cf2intrp.c +++ b/src/cff/cf2intrp.c @@ -771,8 +771,9 @@ switch ( op1 ) { case cf2_cmdCALLGSUBR: - FT_TRACE4(( "(%d)\n", - subrIndex + (CF2_UInt)decoder->globals_bias )); + FT_TRACE4(( " (idx %d, entering level %d)\n", + subrIndex + (CF2_UInt)decoder->globals_bias, + charstringIndex + 1 )); if ( cf2_initGlobalRegionBuffer( decoder, subrIndex, @@ -785,8 +786,9 @@ default: /* cf2_cmdCALLSUBR */ - FT_TRACE4(( "(%d)\n", - subrIndex + (CF2_UInt)decoder->locals_bias )); + FT_TRACE4(( " (idx %d, entering level %d)\n", + subrIndex + (CF2_UInt)decoder->locals_bias, + charstringIndex + 1 )); if ( cf2_initLocalRegionBuffer( decoder, subrIndex, @@ -802,7 +804,7 @@ continue; /* do not clear the stack */ case cf2_cmdRETURN: - FT_TRACE4(( " return\n" )); + FT_TRACE4(( " return (leaving level %d)\n", charstringIndex )); if ( charstringIndex < 1 ) { diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c index 414790aec..b5bc4a27e 100644 --- a/src/cff/cffgload.c +++ b/src/cff/cffgload.c @@ -2389,7 +2389,9 @@ decoder->locals_bias ); - FT_TRACE4(( " callsubr(%d)\n", idx )); + FT_TRACE4(( " callsubr (idx %d, entering level %d)\n", + idx, + zone - decoder->zones + 1 )); if ( idx >= decoder->num_locals ) { @@ -2431,7 +2433,9 @@ decoder->globals_bias ); - FT_TRACE4(( " callgsubr(%d)\n", idx )); + FT_TRACE4(( " callgsubr (idx %d, entering level %d)\n", + idx, + zone - decoder->zones + 1 )); if ( idx >= decoder->num_globals ) { @@ -2468,7 +2472,8 @@ break; case cff_op_return: - FT_TRACE4(( " return\n" )); + FT_TRACE4(( " return (leaving level %d)\n", + decoder->zone - decoder->zones )); if ( decoder->zone <= decoder->zones ) {