Fix invalid function pointer casts.

This change should allow Freetype to work on WASM/Emscripten without
needing `-s EMULATE_FUNCTION_POINTER_CASTS=1'.

* src/autofit/afdummy.c (af_dummy_hints_apply): Fix signature.

* src/cid/cidload.c (cid_parse_font_matrix, parse_fd_array,
parse_expansion_factor, parse_font_name): Return `void', not
`FT_Error'.

* include/freetype/internal/ftobjs.h (FT_CMap_CharVarIsDefaultFunc):
Fix signature.
This commit is contained in:
Andrei Alexeyev 2019-03-07 09:42:25 +01:00 committed by Werner Lemberg
parent 31757f969f
commit 2f4b740ce4
4 changed files with 38 additions and 16 deletions

View File

@ -1,3 +1,20 @@
2019-03-07 Andrei Alexeyev <0x416b617269@gmail.com>
Werner Lemberg <wl@gnu.org>
Fix invalid function pointer casts.
This change should allow Freetype to work on WASM/Emscripten without
needing `-s EMULATE_FUNCTION_POINTER_CASTS=1'.
* src/autofit/afdummy.c (af_dummy_hints_apply): Fix signature.
* src/cid/cidload.c (cid_parse_font_matrix, parse_fd_array,
parse_expansion_factor, parse_font_name): Return `void', not
`FT_Error'.
* include/freetype/internal/ftobjs.h (FT_CMap_CharVarIsDefaultFunc):
Fix signature.
2019-03-05 Werner Lemberg <wl@gnu.org>
[base] Handle numeric overflow (#55827).

View File

@ -185,7 +185,7 @@ FT_BEGIN_HEADER
FT_UInt32 char_code,
FT_UInt32 variant_selector );
typedef FT_Bool
typedef FT_Int
(*FT_CMap_CharVarIsDefaultFunc)( FT_CMap cmap,
FT_UInt32 char_code,
FT_UInt32 variant_selector );

View File

@ -38,13 +38,15 @@
static FT_Error
af_dummy_hints_apply( FT_UInt glyph_index,
AF_GlyphHints hints,
FT_Outline* outline )
af_dummy_hints_apply( FT_UInt glyph_index,
AF_GlyphHints hints,
FT_Outline* outline,
AF_StyleMetrics metrics )
{
FT_Error error;
FT_UNUSED( glyph_index );
FT_UNUSED( metrics );
error = af_glyph_hints_reload( hints, outline );

View File

@ -154,7 +154,7 @@
}
FT_CALLBACK_DEF( FT_Error )
FT_CALLBACK_DEF( void )
cid_parse_font_matrix( CID_Face face,
CID_Parser* parser )
{
@ -179,7 +179,10 @@
result = cid_parser_to_fixed_array( parser, 6, temp, 3 );
if ( result < 6 )
return FT_THROW( Invalid_File_Format );
{
FT_ERROR(( "cid_parse_font_matrix: not enough matrix elements\n" ));
goto Exit;
}
FT_TRACE4(( " [%f %f %f %f %f %f]\n",
(double)temp[0] / 65536 / 1000,
@ -194,7 +197,7 @@
if ( temp_scale == 0 )
{
FT_ERROR(( "cid_parse_font_matrix: invalid font matrix\n" ));
return FT_THROW( Invalid_File_Format );
goto Exit;
}
/* atypical case */
@ -220,7 +223,7 @@
{
FT_ERROR(( "t1_parse_font_matrix: invalid font matrix\n" ));
parser->root.error = FT_THROW( Invalid_File_Format );
return FT_THROW( Invalid_File_Format );
goto Exit;
}
/* note that the font offsets are expressed in integer font units */
@ -228,11 +231,12 @@
offset->y = temp[5] >> 16;
}
return FT_Err_Ok;
Exit:
return;
}
FT_CALLBACK_DEF( FT_Error )
FT_CALLBACK_DEF( void )
parse_fd_array( CID_Face face,
CID_Parser* parser )
{
@ -247,7 +251,6 @@
if ( num_dicts < 0 )
{
FT_ERROR(( "parse_fd_array: invalid number of dictionaries\n" ));
error = FT_THROW( Invalid_File_Format );
goto Exit;
}
@ -304,7 +307,7 @@
}
Exit:
return error;
return;
}
@ -312,7 +315,7 @@
/* and CID_FaceDictRec (both are public header files and can't */
/* changed). We simply copy the value. */
FT_CALLBACK_DEF( FT_Error )
FT_CALLBACK_DEF( void )
parse_expansion_factor( CID_Face face,
CID_Parser* parser )
{
@ -329,7 +332,7 @@
FT_TRACE4(( "%d\n", dict->expansion_factor ));
}
return FT_Err_Ok;
return;
}
@ -337,7 +340,7 @@
/* `FontName' keyword. FreeType doesn't need it, but it is nice */
/* to catch it for producing better trace output. */
FT_CALLBACK_DEF( FT_Error )
FT_CALLBACK_DEF( void )
parse_font_name( CID_Face face,
CID_Parser* parser )
{
@ -361,7 +364,7 @@
FT_UNUSED( parser );
#endif
return FT_Err_Ok;
return;
}