X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Fftglue.c;h=1eca304cf88e4b9f8bf2011a7becc8985c54d258;hb=2e44cbe1b9bf466718167e9e05077743df36ab21;hp=413a933ab1b02e3b6171ec82faf86632196650fd;hpb=822ec78c54a24a0f1589154ac2d4906b02b111ef;p=fontconfig.git diff --git a/src/ftglue.c b/src/ftglue.c index 413a933..1eca304 100644 --- a/src/ftglue.c +++ b/src/ftglue.c @@ -60,64 +60,7 @@ ftglue_qalloc( FT_Memory memory, } while (0) -FTGLUE_APIDEF( FT_Pointer ) -ftglue_alloc( FT_Memory memory, - FT_ULong size, - FT_Error *perror ) -{ - FT_Error error = 0; - FT_Pointer block = NULL; - - if ( size > 0 ) - { - block = memory->alloc( memory, size ); - if ( !block ) - error = FT_Err_Out_Of_Memory; - else - memset( (char*)block, 0, (size_t)size ); - } - - *perror = error; - return block; -} - - -FTGLUE_APIDEF( FT_Pointer ) -ftglue_realloc( FT_Memory memory, - FT_Pointer block, - FT_ULong old_size, - FT_ULong new_size, - FT_Error *perror ) -{ - FT_Pointer block2 = NULL; - FT_Error error = 0; - - if ( old_size == 0 || block == NULL ) - { - block2 = ftglue_alloc( memory, new_size, &error ); - } - else if ( new_size == 0 ) - { - ftglue_free( memory, block ); - } - else - { - block2 = memory->realloc( memory, old_size, new_size, block ); - if ( block2 == NULL ) - error = FT_Err_Out_Of_Memory; - else if ( new_size > old_size ) - memset( (char*)block2 + old_size, 0, (size_t)(new_size - old_size) ); - } - - if ( !error ) - block = block2; - - *perror = error; - return block; -} - - -FTGLUE_APIDEF( void ) +static void ftglue_free( FT_Memory memory, FT_Pointer block ) { @@ -125,7 +68,6 @@ ftglue_free( FT_Memory memory, memory->free( memory, block ); } - FTGLUE_APIDEF( FT_Long ) ftglue_stream_pos( FT_Stream stream ) { @@ -245,10 +187,17 @@ ftglue_face_goto_table( FT_Face face, /* parse the directory table directly, without using * FreeType's built-in data structures */ - FT_ULong offset = 0; + FT_ULong offset = 0, sig; FT_UInt count, nn; - if ( face->num_faces > 1 ) + if ( FILE_Seek( 0 ) || ACCESS_Frame( 4 ) ) + goto Exit; + + sig = GET_Tag4(); + + FORGET_Frame(); + + if ( sig == FT_MAKE_TAG( 't', 't', 'c', 'f' ) ) { /* deal with TrueType collections */ @@ -294,7 +243,7 @@ ftglue_face_goto_table( FT_Face face, goto FoundIt; } } - error = TT_Err_Table_Missing; + error = FT_Err_Table_Missing; FoundIt: FORGET_Frame(); @@ -307,3 +256,6 @@ Exit: } #undef QALLOC +#define __ftglue__ +#include "fcaliastail.h" +#undef __ftglue__