123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- --- freetype-2.3.11/src/psaux/psobjs.c 2009-07-31 18:45:18.000000000 +0200
- +++ freetype-2.3.11/src/psaux/psobjs.c 2012-04-03 13:14:05.000000000 +0200
- @@ -4,7 +4,7 @@
- /* */
- /* Auxiliary functions for PostScript fonts (body). */
- /* */
- -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
- +/* Copyright 1996-2012 by */
- /* David Turner, Robert Wilhelm, and Werner Lemberg. */
- /* */
- /* This file is part of the FreeType project, and may only be used, */
- @@ -589,7 +589,7 @@
- }
-
- Exit:
- - if ( cur == parser->cursor )
- + if ( cur < limit && cur == parser->cursor )
- {
- FT_ERROR(( "ps_parser_skip_PS_token:"
- " current token is `%c' which is self-delimiting\n"
- --- freetype-2.3.11/src/type1/t1load.c 2009-09-01 08:07:32.000000000 +0200
- +++ freetype-2.3.11/src/type1/t1load.c 2012-04-03 13:14:30.000000000 +0200
- @@ -71,6 +71,13 @@
- #include "t1errors.h"
-
-
- +#ifdef FT_CONFIG_OPTION_INCREMENTAL
- +#define IS_INCREMENTAL ( face->root.internal->incremental_interface != 0 )
- +#else
- +#define IS_INCREMENTAL 0
- +#endif
- +
- +
- /*************************************************************************/
- /* */
- /* The macro FT_COMPONENT is used in trace mode. It is an implicit */
- @@ -1027,7 +1034,8 @@
- static int
- read_binary_data( T1_Parser parser,
- FT_Long* size,
- - FT_Byte** base )
- + FT_Byte** base,
- + FT_Bool incremental )
- {
- FT_Byte* cur;
- FT_Byte* limit = parser->root.limit;
- @@ -1057,8 +1065,12 @@
- return !parser->root.error;
- }
-
- - FT_ERROR(( "read_binary_data: invalid size field\n" ));
- - parser->root.error = T1_Err_Invalid_File_Format;
- + if( !incremental )
- + {
- + FT_ERROR(( "read_binary_data: invalid size field\n" ));
- + parser->root.error = T1_Err_Invalid_File_Format;
- + }
- +
- return 0;
- }
-
- @@ -1379,15 +1391,17 @@
- FT_Byte* base;
-
-
- - /* If the next token isn't `dup' we are done. */
- - if ( ft_strncmp( (char*)parser->root.cursor, "dup", 3 ) != 0 )
- + /* If we are out of data, or if the next token isn't `dup', */
- + /* we are done. */
- + if ( parser->root.cursor + 4 >= parser->root.limit ||
- + ft_strncmp( (char*)parser->root.cursor, "dup", 3 ) != 0 )
- break;
-
- T1_Skip_PS_Token( parser ); /* `dup' */
-
- idx = T1_ToInt( parser );
-
- - if ( !read_binary_data( parser, &size, &base ) )
- + if ( !read_binary_data( parser, &size, &base, IS_INCREMENTAL ) )
- return;
-
- /* The binary string is followed by one token, e.g. `NP' */
- @@ -1399,7 +1413,8 @@
- return;
- T1_Skip_Spaces ( parser );
-
- - if ( ft_strncmp( (char*)parser->root.cursor, "put", 3 ) == 0 )
- + if ( parser->root.cursor + 4 < parser->root.limit &&
- + ft_strncmp( (char*)parser->root.cursor, "put", 3 ) == 0 )
- {
- T1_Skip_PS_Token( parser ); /* skip `put' */
- T1_Skip_Spaces ( parser );
- @@ -1572,7 +1587,7 @@
- cur++; /* skip `/' */
- len = parser->root.cursor - cur;
-
- - if ( !read_binary_data( parser, &size, &base ) )
- + if ( !read_binary_data( parser, &size, &base, IS_INCREMENTAL ) )
- return;
-
- /* for some non-standard fonts like `Optima' which provides */
- @@ -1861,7 +1876,7 @@
-
-
- parser->root.cursor = start_binary;
- - if ( !read_binary_data( parser, &s, &b ) )
- + if ( !read_binary_data( parser, &s, &b, IS_INCREMENTAL ) )
- return T1_Err_Invalid_File_Format;
- have_integer = 0;
- }
- @@ -1874,7 +1889,7 @@
-
-
- parser->root.cursor = start_binary;
- - if ( !read_binary_data( parser, &s, &b ) )
- + if ( !read_binary_data( parser, &s, &b, IS_INCREMENTAL ) )
- return T1_Err_Invalid_File_Format;
- have_integer = 0;
- }
- @@ -2148,9 +2163,7 @@
- type1->subrs_len = loader.subrs.lengths;
- }
-
- -#ifdef FT_CONFIG_OPTION_INCREMENTAL
- - if ( !face->root.internal->incremental_interface )
- -#endif
- + if ( !IS_INCREMENTAL )
- if ( !loader.charstrings.init )
- {
- FT_ERROR(( "T1_Open_Face: no `/CharStrings' array in face\n" ));
|