Index: third_party/freetype/src/cff/cf2intrp.c |
diff --git a/core/src/fxge/fx_freetype/fxft2.5.01/src/cff/cf2intrp.c b/third_party/freetype/src/cff/cf2intrp.c |
similarity index 96% |
rename from core/src/fxge/fx_freetype/fxft2.5.01/src/cff/cf2intrp.c |
rename to third_party/freetype/src/cff/cf2intrp.c |
index fc111000126648594a3cd760424054ed2496b0d3..a26960669f171114357d8694f664568b8d4fcea2 100644 |
--- a/core/src/fxge/fx_freetype/fxft2.5.01/src/cff/cf2intrp.c |
+++ b/third_party/freetype/src/cff/cf2intrp.c |
@@ -4,7 +4,7 @@ |
/* */ |
/* Adobe's CFF Interpreter (body). */ |
/* */ |
-/* Copyright 2007-2013 Adobe Systems Incorporated. */ |
+/* Copyright 2007-2014 Adobe Systems Incorporated. */ |
/* */ |
/* This software, and all works of authorship, whether in source or */ |
/* object code form as indicated by the copyright notice(s) included */ |
@@ -37,7 +37,7 @@ |
#include "cf2ft.h" |
-#include "../../include/freetype/internal/ftdebug.h" |
+#include FT_INTERNAL_DEBUG_H |
#include "cf2glue.h" |
#include "cf2font.h" |
@@ -464,6 +464,7 @@ |
CF2_HintMaskRec hintMask; |
CF2_GlyphPathRec glyphPath; |
+ |
/* initialize the remaining objects */ |
cf2_arrstack_init( &subrStack, |
memory, |
@@ -592,8 +593,11 @@ |
/* never add hints after the mask is computed */ |
if ( cf2_hintmask_isValid( &hintMask ) ) |
+ { |
FT_TRACE4(( "cf2_interpT2CharString:" |
" invalid horizontal hint mask\n" )); |
+ break; |
+ } |
cf2_doStems( font, |
opStack, |
@@ -613,8 +617,11 @@ |
/* never add hints after the mask is computed */ |
if ( cf2_hintmask_isValid( &hintMask ) ) |
+ { |
FT_TRACE4(( "cf2_interpT2CharString:" |
" invalid vertical hint mask\n" )); |
+ break; |
+ } |
cf2_doStems( font, |
opStack, |
@@ -643,7 +650,6 @@ |
curY += cf2_stack_popFixed( opStack ); |
cf2_glyphpath_moveTo( &glyphPath, curX, curY ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
break; |
@@ -661,7 +667,6 @@ |
curY += cf2_stack_getReal( opStack, index + 1 ); |
cf2_glyphpath_lineTo( &glyphPath, curX, curY ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
} |
cf2_stack_clear( opStack ); |
@@ -692,7 +697,6 @@ |
isX = !isX; |
cf2_glyphpath_lineTo( &glyphPath, curX, curY ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
} |
cf2_stack_clear( opStack ); |
@@ -720,7 +724,6 @@ |
cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
curX = x3; |
curY = y3; |
@@ -733,7 +736,6 @@ |
curY += cf2_stack_getReal( opStack, index + 1 ); |
cf2_glyphpath_lineTo( &glyphPath, curX, curY ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
} |
cf2_stack_clear( opStack ); |
@@ -1145,15 +1147,16 @@ |
/* `cf2_hintmask_read' (which also traces the mask bytes) */ |
FT_TRACE4(( op1 == cf2_cmdCNTRMASK ? " cntrmask" : " hintmask" )); |
- /* if there are arguments on the stack, there this is an */ |
- /* implied cf2_cmdVSTEMHM */ |
- if ( cf2_stack_count( opStack ) != 0 ) |
+ /* never add hints after the mask is computed */ |
+ if ( cf2_stack_count( opStack ) > 1 && |
+ cf2_hintmask_isValid( &hintMask ) ) |
{ |
- /* never add hints after the mask is computed */ |
- if ( cf2_hintmask_isValid( &hintMask ) ) |
- FT_TRACE4(( "cf2_interpT2CharString: invalid hint mask\n" )); |
+ FT_TRACE4(( "cf2_interpT2CharString: invalid hint mask\n" )); |
+ break; |
} |
+ /* if there are arguments on the stack, there this is an */ |
+ /* implied cf2_cmdVSTEMHM */ |
cf2_doStems( font, |
opStack, |
&vStemHintArray, |
@@ -1227,7 +1230,6 @@ |
curX += cf2_stack_popFixed( opStack ); |
cf2_glyphpath_moveTo( &glyphPath, curX, curY ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
break; |
@@ -1246,7 +1248,6 @@ |
curX += cf2_stack_popFixed( opStack ); |
cf2_glyphpath_moveTo( &glyphPath, curX, curY ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
break; |
@@ -1264,7 +1265,6 @@ |
curY += cf2_stack_getReal( opStack, index + 1 ); |
cf2_glyphpath_lineTo( &glyphPath, curX, curY ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
index += 2; |
} |
@@ -1279,7 +1279,6 @@ |
cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
curX = x3; |
curY = y3; |
@@ -1319,7 +1318,6 @@ |
y3 = cf2_stack_getReal( opStack, index + 3 ) + y2; |
cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
curX = x3; |
curY = y3; |
@@ -1359,7 +1357,6 @@ |
y3 = y2; |
cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
curX = x3; |
curY = y3; |
@@ -1426,7 +1423,6 @@ |
} |
cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 ); |
- if (glyphPath.callbacks && glyphPath.callbacks->error && *glyphPath.callbacks->error) goto exit; |
curX = x3; |
curY = y3; |