Hi, Attached is a cleanup patch that: - Fixes a couple compiler warnings. Namely, an excess prototype, and old-style function declaration. - Cleans up ftglue.h, removing stuff we don''t use. - Makes get_{char,short,long} functions of ftglue macros to be inlined. I''m making a similar change to pango/opentype and the size growth for that huge code was about 7kb in a 100kb striped binary. In fontconfig it''s much much less. --behdad http://behdad.org/ "Commandment Three says Do Not Kill, Amendment Two says Blood Will Spill" -- Dan Bern, "New American Language" -------------- next part -------------- Index: src/fcfreetype.c ==================================================================RCS file: /cvs/fontconfig/fontconfig/src/fcfreetype.c,v retrieving revision 1.60.2.20 diff -u -p -d -r1.60.2.20 fcfreetype.c --- src/fcfreetype.c 3 Mar 2006 06:35:53 -0000 1.60.2.20 +++ src/fcfreetype.c 7 Mar 2006 13:54:03 -0000 @@ -2762,7 +2762,7 @@ GetScriptTags(FT_Face face, FT_ULong tab if ( ftglue_stream_seek ( stream, base_offset + 4L ) || ftglue_stream_frame_enter( stream, 2L ) ) return error; - new_offset = ((FT_UShort)ftglue_stream_get_short ( stream )) + base_offset; + new_offset = GET_UShort() + base_offset; ftglue_stream_frame_exit( stream ); @@ -2776,7 +2776,7 @@ GetScriptTags(FT_Face face, FT_ULong tab if ( ftglue_stream_frame_enter( stream, 2L ) ) return error; - *script_count = ((FT_UShort)ftglue_stream_get_short ( stream )); + *script_count = GET_UShort (); ftglue_stream_frame_exit( stream ); @@ -2791,8 +2791,8 @@ GetScriptTags(FT_Face face, FT_ULong tab if ( ftglue_stream_frame_enter( stream, 6L ) ) goto Fail; - (*stags)[p] = ((FT_ULong)ftglue_stream_get_long ( stream )); - new_offset = ((FT_UShort)ftglue_stream_get_short ( stream )) + base_offset; + (*stags)[p] = GET_ULong (); + new_offset = GET_UShort () + base_offset; ftglue_stream_frame_exit( stream ); Index: src/fcint.h ==================================================================RCS file: /cvs/fontconfig/fontconfig/src/fcint.h,v retrieving revision 1.47.4.38 diff -u -p -d -r1.47.4.38 fcint.h --- src/fcint.h 3 Mar 2006 18:35:42 -0000 1.47.4.38 +++ src/fcint.h 7 Mar 2006 13:54:03 -0000 @@ -912,9 +912,6 @@ FcPatternEltU (FcPatternEltPtr pei) return &_fcPatternElts[FcCacheBankToIndex(pei.bank)][pei.u.stat]; } -FcPatternElt * -FcPatternEltU (FcPatternEltPtr pei); - FcValueListPtr FcValueListPtrCreateDynamic(FcValueList * p); Index: src/fcname.c ==================================================================RCS file: /cvs/fontconfig/fontconfig/src/fcname.c,v retrieving revision 1.27.4.16 diff -u -p -d -r1.27.4.16 fcname.c --- src/fcname.c 7 Jan 2006 06:36:24 -0000 1.27.4.16 +++ src/fcname.c 7 Mar 2006 13:54:03 -0000 @@ -358,7 +358,7 @@ FcObjectDistributeBytes (FcCache * metad } void -FcObjectSerialize () +FcObjectSerialize (void) { int i; for (i = 0; i < biggest_known_ntypes; i++) Index: src/ftglue.c ==================================================================RCS file: /cvs/fontconfig/fontconfig/src/Attic/ftglue.c,v retrieving revision 1.1.2.2 diff -u -p -d -r1.1.2.2 ftglue.c --- src/ftglue.c 21 Feb 2006 15:50:19 -0000 1.1.2.2 +++ src/ftglue.c 7 Mar 2006 13:54:03 -0000 @@ -50,6 +50,14 @@ ftglue_qalloc( FT_Memory memory, #undef QALLOC /* just in case */ #define QALLOC(ptr,size) ( (ptr) = ftglue_qalloc( memory, (size), &error ), error != 0 ) +#define FREE(_ptr) \ + do { \ + if ( (_ptr) ) \ + { \ + ftglue_free( memory, _ptr ); \ + _ptr = NULL; \ + } \ + } while (0) FTGLUE_APIDEF( FT_Pointer ) @@ -212,53 +220,6 @@ ftglue_stream_frame_exit( FT_Stream str } -FTGLUE_APIDEF( FT_Byte ) -ftglue_stream_get_byte( FT_Stream stream ) -{ - FT_Byte result = 0; - - if ( stream->cursor < stream->limit ) - result = *stream->cursor++; - - return result; -} - - -FTGLUE_APIDEF( FT_Short ) -ftglue_stream_get_short( FT_Stream stream ) -{ - FT_Byte* p; - FT_Short result = 0; - - p = stream->cursor; - if ( p + 2 <= stream->limit ) - { - result = (FT_Short)((p[0] << 8) | p[1]); - stream->cursor = p+2; - } - return result; -} - - -FTGLUE_APIDEF( FT_Long ) -ftglue_stream_get_long( FT_Stream stream ) -{ - FT_Byte* p; - FT_Long result = 0; - - p = stream->cursor; - if ( p + 4 <= stream->limit ) - { - result = (FT_Long)(((FT_Long)p[0] << 24) | - ((FT_Long)p[1] << 16) | - ((FT_Long)p[2] << 8) | - p[3] ); - stream->cursor = p+4; - } - return result; -} - - FTGLUE_APIDEF( FT_Error ) ftglue_face_goto_table( FT_Face face, FT_ULong the_tag, Index: src/ftglue.h ==================================================================RCS file: /cvs/fontconfig/fontconfig/src/Attic/ftglue.h,v retrieving revision 1.1.2.1 diff -u -p -d -r1.1.2.1 ftglue.h --- src/ftglue.h 19 Nov 2005 22:37:24 -0000 1.1.2.1 +++ src/ftglue.h 7 Mar 2006 13:54:04 -0000 @@ -71,9 +71,17 @@ FT_BEGIN_HEADER #define ACCESS_Frame(size) SET_ERR( ftglue_stream_frame_enter( stream, size ) ) #define FORGET_Frame() ftglue_stream_frame_exit( stream ) -#define GET_Byte() ftglue_stream_get_byte( stream ) -#define GET_Short() ftglue_stream_get_short( stream ) -#define GET_Long() ftglue_stream_get_long( stream ) +#define GET_Byte() (*stream->cursor++) +#define GET_Short() (stream->cursor += 2, (FT_Short)( \ + (*(((FT_Byte*)stream->cursor)-2) << 8) | \ + *(((FT_Byte*)stream->cursor)-1) \ + )) +#define GET_Long() (stream->cursor += 4, (FT_Long)( \ + (*(((FT_Byte*)stream->cursor)-4) << 24) | \ + (*(((FT_Byte*)stream->cursor)-3) << 16) | \ + (*(((FT_Byte*)stream->cursor)-2) << 8) | \ + *(((FT_Byte*)stream->cursor)-1) \ + )) #define GET_Char() ((FT_Char)GET_Byte()) #define GET_UShort() ((FT_UShort)GET_Short()) @@ -111,31 +119,6 @@ ftglue_face_goto_table( FT_Face face, FT_ULong tag, FT_Stream stream ); -/* memory macros used by the OpenType parser */ -#define ALLOC(_ptr,_size) \ - ( (_ptr) = ftglue_alloc( memory, _size, &error ), error != 0 ) - -#define REALLOC(_ptr,_oldsz,_newsz) \ - ( (_ptr) = ftglue_realloc( memory, (_ptr), (_oldsz), (_newsz), &error ), error != 0 ) - -#define FREE(_ptr) \ - do { \ - if ( (_ptr) ) \ - { \ - ftglue_free( memory, _ptr ); \ - _ptr = NULL; \ - } \ - } while (0) - -#define ALLOC_ARRAY(_ptr,_count,_type) \ - ALLOC(_ptr,(_count)*sizeof(_type)) - -#define REALLOC_ARRAY(_ptr,_oldcnt,_newcnt,_type) \ - REALLOC(_ptr,(_oldcnt)*sizeof(_type),(_newcnt)*sizeof(_type)) - -#define MEM_Copy(dest,source,count) memcpy( (char*)(dest), (const char*)(source), (size_t)(count) ) - - FTGLUE_API( FT_Pointer ) ftglue_alloc( FT_Memory memory, FT_ULong size,