diff --git a/builds/unix/aclocal.m4 b/builds/unix/aclocal.m4 index 47abe4306..2da46d3e0 100644 --- a/builds/unix/aclocal.m4 +++ b/builds/unix/aclocal.m4 @@ -1,3 +1,31 @@ +## FreeType specific autoconf tests + +AC_DEFUN(FT_MUNMAP_DECL, +[AC_MSG_CHECKING([whether munmap must be declared]) +AC_CACHE_VAL(ft_cv_munmap_decl, +[AC_TRY_COMPILE([ +#ifdef HAVE_UNISTD_H +#include +#endif +#include ], +[char *(*pfn) = (char *(*))munmap], +ft_cv_munmap_decl=no, +ft_cv_munmap_decl=yes)]) +AC_MSG_RESULT($ft_cv_munmap_decl) +if test $ft_cv_munmap_decl = yes; then + AC_DEFINE(NEED_MUNMAP_DECL) +fi]) + +AC_DEFUN(FT_MUNMAP_PARAM, +[AC_MSG_CHECKING([for munmap's first parameter type]) +AC_TRY_COMPILE([ +#include +#include +int munmap(void *, size_t);],, + AC_MSG_RESULT([void *]);AC_DEFINE(MUNMAP_USES_VOIDP), + AC_MSG_RESULT([char *])) +]) + ## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- ## Copyright (C) 1996-1999 Free Software Foundation, Inc. ## Originally by Gordon Matzigkeit , 1996 diff --git a/builds/unix/configure b/builds/unix/configure index 6080f0333..1b28cde3b 100644 --- a/builds/unix/configure +++ b/builds/unix/configure @@ -1667,18 +1667,82 @@ if test "$ac_cv_func_mmap_fixed_mapped" != yes; then FTSYS_SRC='$(BASE_)ftsystem.c' else FTSYS_SRC='$(BUILD)/ftsystem.c' + + echo $ac_n "checking whether munmap must be declared""... $ac_c" 1>&6 +echo "configure:1673: checking whether munmap must be declared" >&5 +if eval "test \"`echo '$''{'ft_cv_munmap_decl'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#endif +#include +int main() { +char *(*pfn) = (char *(*))munmap +; return 0; } +EOF +if { (eval echo configure:1689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ft_cv_munmap_decl=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ft_cv_munmap_decl=yes +fi +rm -f conftest* +fi + +echo "$ac_t""$ft_cv_munmap_decl" 1>&6 +if test $ft_cv_munmap_decl = yes; then + cat >> confdefs.h <<\EOF +#define NEED_MUNMAP_DECL 1 +EOF + +fi + echo $ac_n "checking for munmap's first parameter type""... $ac_c" 1>&6 +echo "configure:1709: checking for munmap's first parameter type" >&5 +cat > conftest.$ac_ext < +#include +int munmap(void *, size_t); +int main() { + +; return 0; } +EOF +if { (eval echo configure:1721: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""void *" 1>&6;cat >> confdefs.h <<\EOF +#define MUNMAP_USES_VOIDP 1 +EOF + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + echo "$ac_t""char *" 1>&6 +fi +rm -f conftest* + fi for ac_func in memcpy memmove do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1677: checking for $ac_func" >&5 +echo "configure:1741: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1798,7 +1862,7 @@ fi # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1802: checking for $ac_word" >&5 +echo "configure:1866: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1837,7 +1901,7 @@ ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1841: checking for ld used by GCC" >&5 +echo "configure:1905: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -1861,10 +1925,10 @@ echo "configure:1841: checking for ld used by GCC" >&5 esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1865: checking for GNU ld" >&5 +echo "configure:1929: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1868: checking for non-GNU ld" >&5 +echo "configure:1932: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1899,7 +1963,7 @@ else fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1903: checking if the linker ($LD) is GNU ld" >&5 +echo "configure:1967: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1915,7 +1979,7 @@ echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1919: checking for BSD-compatible nm" >&5 +echo "configure:1983: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1951,7 +2015,7 @@ NM="$ac_cv_path_NM" echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1955: checking whether ln -s works" >&5 +echo "configure:2019: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2000,8 +2064,8 @@ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. - echo '#line 2004 "configure"' > conftest.$ac_ext - if { (eval echo configure:2005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 2068 "configure"' > conftest.$ac_ext + if { (eval echo configure:2069: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" @@ -2022,19 +2086,19 @@ case "$lt_target" in SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:2026: checking whether the C compiler needs -belf" >&5 +echo "configure:2090: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else diff --git a/builds/unix/configure.in b/builds/unix/configure.in index 48ef13ee8..139c3d0db 100644 --- a/builds/unix/configure.in +++ b/builds/unix/configure.in @@ -68,6 +68,9 @@ if test "$ac_cv_func_mmap_fixed_mapped" != yes; then FTSYS_SRC='$(BASE_)ftsystem.c' else FTSYS_SRC='$(BUILD)/ftsystem.c' + + FT_MUNMAP_DECL + FT_MUNMAP_PARAM fi AC_SUBST(FTSYS_SRC) diff --git a/builds/unix/ftsystem.c b/builds/unix/ftsystem.c index 0f0179a3a..091ec09b3 100644 --- a/builds/unix/ftsystem.c +++ b/builds/unix/ftsystem.c @@ -27,7 +27,7 @@ #include - /* memory-mapping includes and definitions */ + /* memory-mapping includes and definitions */ #ifdef HAVE_UNISTD_H #include #endif @@ -37,17 +37,27 @@ #define MAP_FILE 0x00 #endif - /*************************************************************************/ - /* */ - /* The prototype for munmap() is not provided on SunOS. This needs to */ - /* have a check added later to see if the GNU C library is being used. */ - /* If so, then this prototype is not needed. */ - /* */ -#if defined( __sun__ ) && !defined( SVR4 ) && !defined( __SVR4 ) - extern int munmap( caddr_t addr, - int len ); +#ifdef MUNMAP_USES_VOIDP +#define MUNMAP_ARG_CAST void * +#else +#define MUNMAP_ARG_CAST char * #endif +#ifdef NEED_MUNMAP_DECL + +#ifdef __cplusplus + extern "C" +#else + extern +#endif + int munmap( char* addr, + int len ); + +#define MUNMAP_ARG_CAST char * + +#endif /* NEED_DECLARATION_MUNMAP */ + + #include #ifdef HAVE_FCNTL_H @@ -182,7 +192,7 @@ static void ft_close_stream( FT_Stream stream ) { - munmap ( stream->descriptor.pointer, stream->size ); + munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); stream->descriptor.pointer = NULL; stream->size = 0; @@ -235,12 +245,12 @@ stream->size = stat_buf.st_size; stream->pos = 0; - stream->base = (unsigned char*)mmap( NULL, - stream->size, - PROT_READ, - MAP_FILE | MAP_PRIVATE, - file, - 0 ); + stream->base = (unsigned char *)mmap( NULL, + stream->size, + PROT_READ, + MAP_FILE | MAP_PRIVATE, + file, + 0 ); if ( (long)stream->base == -1 ) { diff --git a/src/cff/t2gload.c b/src/cff/t2gload.c index 1023e3cf4..ba86a60e2 100644 --- a/src/cff/t2gload.c +++ b/src/cff/t2gload.c @@ -597,7 +597,6 @@ { T2_Operator op; FT_Byte v; - FT_Byte count; /********************************************************************/ @@ -841,7 +840,7 @@ goto Syntax_Error; /* check arguments */ - req_args = count = t2_argument_counts[op]; + req_args = t2_argument_counts[op]; if ( req_args & T2_COUNT_CHECK_WIDTH ) { args = stack; @@ -1534,8 +1533,8 @@ case t2_op_roll: { - FT_Int count = (FT_Int)( args[0] >> 16 ); - FT_Int index = (FT_Int)( args[1] >> 16 ); + FT_Int count = (FT_Int)( args[0] >> 16 ); + FT_Int index = (FT_Int)( args[1] >> 16 ); FT_TRACE4(( " roll" )); @@ -1551,8 +1550,8 @@ { while ( index > 0 ) { - FT_Fixed tmp = args[count - 1]; - FT_Int i; + FT_Fixed tmp = args[count - 1]; + FT_Int i; for ( i = count - 2; i >= 0; i-- ) diff --git a/src/cff/t2load.c b/src/cff/t2load.c index 9f89845a8..92233467f 100644 --- a/src/cff/t2load.c +++ b/src/cff/t2load.c @@ -126,7 +126,8 @@ else { /* skip the data */ - (void)FILE_Skip( data_size ); + if ( FILE_Skip( data_size ) ) + goto Exit; } } @@ -609,7 +610,8 @@ } /* skip the rest of the header */ - (void)FILE_Skip( font->header_size - 4 ); + if ( FILE_Skip( font->header_size - 4 ) ) + goto Exit; /* read the name, top dict, string and global subrs index */ error = t2_new_cff_index( &font->name_index, stream, 0 ) || diff --git a/src/cff/t2parse.c b/src/cff/t2parse.c index b71b0ea8e..fbc4f2bc6 100644 --- a/src/cff/t2parse.c +++ b/src/cff/t2parse.c @@ -563,7 +563,6 @@ FT_Byte* qcount = (FT_Byte*)parser->object + field->count_offset; - FT_Long val; FT_Byte** data = parser->stack; diff --git a/src/sfnt/ttload.c b/src/sfnt/ttload.c index 438fe997b..32338d548 100644 --- a/src/sfnt/ttload.c +++ b/src/sfnt/ttload.c @@ -434,7 +434,9 @@ size = *length; stream = face->root.stream; - (void)FILE_Read_At( offset, buffer, size ); + /* the `if' is syntactic sugar for picky compilers */ + if ( FILE_Read_At( offset, buffer, size ) ) + ; Exit: return error; @@ -941,7 +943,8 @@ FT_ULong upper; - (void)READ_Fields( name_record_fields, cur ); + if ( READ_Fields( name_record_fields, cur ) ) + break; upper = (FT_ULong)( cur->stringOffset + cur->stringLength ); if ( upper > storageSize ) diff --git a/src/sfnt/ttsbit.c b/src/sfnt/ttsbit.c index 7652f2723..20d7a98a1 100644 --- a/src/sfnt/ttsbit.c +++ b/src/sfnt/ttsbit.c @@ -503,12 +503,11 @@ while ( count > 0 ) { - (void)READ_Fields( strike_start_fields, strike ); - - (void)READ_Fields( sbit_line_metrics_fields, &strike->hori ); - (void)READ_Fields( sbit_line_metrics_fields, &strike->vert ); - - (void)READ_Fields( strike_end_fields, strike ); + if ( READ_Fields( strike_start_fields, strike ) || + READ_Fields( sbit_line_metrics_fields, &strike->hori ) || + READ_Fields( sbit_line_metrics_fields, &strike->vert ) || + READ_Fields( strike_end_fields, strike ) ) + break; count--; strike++; @@ -884,7 +883,8 @@ case 7: case 9: /* variable big metrics */ - (void)READ_Fields( sbit_metrics_fields, metrics ); + if ( READ_Fields( sbit_metrics_fields, metrics ) ) + goto Exit; break; case 5: diff --git a/src/type1z/z1load.c b/src/type1z/z1load.c index 1ce67d767..7877c0644 100644 --- a/src/type1z/z1load.c +++ b/src/type1z/z1load.c @@ -576,13 +576,13 @@ /* count the number of map points */ { - FT_Byte* p = token->start; + FT_Byte* ptr = token->start; FT_Byte* limit = token->limit; num_points = 0; - for ( ; p < limit; p++ ) - if ( p[0] == '[' ) + for ( ; ptr < limit; ptr++ ) + if ( ptr[0] == '[' ) num_points++; } if ( num_points <= 0 || num_points > T1_MAX_MM_MAP_POINTS ) @@ -1692,7 +1692,7 @@ for ( ; charcode < loader.encoding_table.num_elems; charcode++ ) { type1->encoding.char_index[charcode] = 0; - type1->encoding.char_name [charcode] = ".notdef"; + type1->encoding.char_name [charcode] = (char *)".notdef"; char_name = loader.encoding_table.elements[charcode]; if ( char_name ) diff --git a/src/winfonts/winfnt.c b/src/winfonts/winfnt.c index afba6e3d0..79a549eeb 100644 --- a/src/winfonts/winfnt.c +++ b/src/winfonts/winfnt.c @@ -347,7 +347,6 @@ if ( error ) { /* this didn't work, now try to load a single FNT font */ - FT_Memory memory = FT_FACE_MEMORY( face ); FNT_Font* font; if ( ALLOC( face->fonts, sizeof ( *face->fonts ) ) ) @@ -423,17 +422,17 @@ root->family_name = (FT_String*)fonts->fnt_frame + fonts->header.face_name_offset; - root->style_name = "Regular"; + root->style_name = (char *)"Regular"; if ( root->style_flags & FT_STYLE_FLAG_BOLD ) { if ( root->style_flags & FT_STYLE_FLAG_ITALIC ) - root->style_name = "Bold Italic"; + root->style_name = (char *)"Bold Italic"; else - root->style_name = "Bold"; + root->style_name = (char *)"Bold"; } else if ( root->style_flags & FT_STYLE_FLAG_ITALIC ) - root->style_name = "Italic"; + root->style_name = (char *)"Italic"; } Fail: