formatting

This commit is contained in:
suzuki toshiya 2011-01-06 21:18:40 +09:00
parent a434c5ab0a
commit 82da8590f3
3 changed files with 102 additions and 51 deletions

View File

@ -509,15 +509,23 @@
}
/*
* ft_mem_get_val_for_source( source, env_var_name )
*
* Get a numerical value from named environmental variable
* for the site specified by FT_MemSource. For the syntax
* of the environmental variable, see docs/DEBUG.
*
*/
static int
ft_mem_check_site_alloc_environment( FT_MemSource source,
const char* env_var_name )
ft_mem_get_env_val_for_source( FT_MemSource source,
const char* env_var_name )
{
char *file_name = (char*)source->file_name;
char *c, *c0;
/* return if environment is unset */
/* return if specified environment is unset */
c = c0 = getenv( env_var_name );
if ( !c )
return -1;
@ -525,24 +533,25 @@
/* return if basename not found anymore */
while ( NULL != ( c = ft_strstr( c, file_name ) ) )
{
/* skip if partial match of basename */
if ( c != c0 && *(c-1) != ' ' && *(c-1) != PLATFORM_PATH_SEPARATOR[0] )
/* matched token is 1st or after separator space? */
if ( c != c0 && *(c-1) != ' ' )
goto NextToken;
/* goto line number after ':' */
/* check ':', a separator between pathname & line number */
c = c + ft_strlen( file_name );
if ( ':' != *c || !ft_isdigit( c[1] ) )
goto NextToken;
c++;
/* compare line number */
/* check the line number */
if ( atoi( c ) != source->line_no )
goto NextToken;
/* line number matched, skip digits */
while ( ft_isdigit( *c ) )
c++;
/* check alloc limiter after ',' */
/* check ',', a separator between line number & value */
if ( ',' != *c || !ft_isdigit( c[1] ) )
goto NextToken;
c++;
@ -730,6 +739,70 @@
}
static FT_Bool
ft_mem_check_alloc_limiter_for_source( FT_MemSource source,
FT_Long size )
{
int mem_limit_site_total = -1; /* negative means unlimited */
int mem_limit_site_cur = -1; /* negative means unlimited */
FT_Bool exceeds_limit_site_total = FALSE;
FT_Bool exceeds_limit_site_cur = FALSE;
long req_all = source->all_size + size;
long req_cur = source->cur_size + size;
#define FT_HAS_LIMITER( key ) \
( mem_limit_ ## key ## _total >= 0 || mem_limit_ ## key ## _cur >= 0 )
#define FT_HAS_MULTI_LIMITERS( key ) \
( mem_limit_ ## key ## _total >= 0 && mem_limit_ ## key ## _cur >= 0 )
#define FT_TRACE6_DEFINED_LIMIT( req, limit ) \
{ \
if ( limit >= 0 ) \
FT_TRACE6(( "%ld =< %ld", req, limit )); \
}
mem_limit_site_total =
ft_mem_get_env_val_for_source( source,
"FT2_ALLOC_TOTAL_MAX_SITE" );
mem_limit_site_cur =
ft_mem_get_env_val_for_source( source,
"FT2_ALLOC_CUR_MAX_SITE" );
if ( FT_HAS_LIMITER( site ) )
FT_TRACE6(( "ft_mem_table_set() invoked by %s:%lu, limit:( ",
source->file_name, source->line_no ));
FT_TRACE6_DEFINED_LIMIT( req_all, mem_limit_site_total );
if ( FT_HAS_MULTI_LIMITERS( site ) )
FT_TRACE6(( " && " ));
FT_TRACE6_DEFINED_LIMIT( req_cur, mem_limit_site_cur );
if ( FT_HAS_LIMITER( site ) )
FT_TRACE6((" )\n"));
if ( mem_limit_site_total >= 0 && mem_limit_site_total > req_all )
exceeds_limit_site_total = TRUE;
if ( mem_limit_site_cur >= 0 && mem_limit_site_cur > req_cur )
exceeds_limit_site_cur = TRUE;
if ( exceeds_limit_site_total || exceeds_limit_site_cur )
{
FT_TRACE6(( "ft_mem_table_set() returns NULL to %s:%lu,"
" allocation request exceeds %s-limit (%lu > %lu)\n",
source->file_name, source->line_no,
( exceeds_limit_site_total ? "site-total" :
"site-current" ),
( exceeds_limit_site_total ? req_all :
req_cur ),
( exceeds_limit_site_total ? mem_limit_site_total :
mem_limit_site_cur )
));
return FALSE;
}
return TRUE;
#undef FT_HAS_LIMITER
#undef FT_HAS_MULTI_LIMITERS
#undef FT_TRACE6_DEFINED_LIMIT
}
extern FT_Pointer
ft_mem_debug_alloc( FT_Memory memory,
FT_Long size )
@ -742,44 +815,10 @@
if ( size <= 0 )
ft_mem_debug_panic( "negative block size allocation (%ld)", size );
{
int mem_limit_site_total = -1; /* negative means unlimited */
int mem_limit_site_cur = -1; /* negative means unlimited */
FT_Bool exceeds_limit_site_total = FALSE;
FT_Bool exceeds_limit_site_cur = FALSE;
source = ft_mem_table_get_source( table );
mem_limit_site_total = ft_mem_check_site_alloc_environment( source, "FT2_ALLOC_TOTAL_MAX_SITE" );
mem_limit_site_cur = ft_mem_check_site_alloc_environment( source, "FT2_ALLOC_CUR_MAX_SITE" );
if ( mem_limit_site_total >= 0 || mem_limit_site_cur >= 0 )
FT_TRACE6(("ft_mem_table_set() invoked by %s:%lu, limit:( ",
source->file_name, source->line_no ));
if ( mem_limit_site_total >= 0 )
FT_TRACE6(("%ld =< %ld", source->all_size + size, mem_limit_site_total ));
if ( mem_limit_site_total >= 0 && mem_limit_site_cur >= 0 )
FT_TRACE6((" && "));
if ( mem_limit_site_cur >= 0 )
FT_TRACE6(("%ld =< %ld", source->cur_size + size, mem_limit_site_cur ));
if ( mem_limit_site_total >= 0 || mem_limit_site_cur >= 0 )
FT_TRACE6((" )\n"));
if ( mem_limit_site_total >= 0 && mem_limit_site_total < ( source->all_size + size ) )
exceeds_limit_site_total = TRUE;
if ( mem_limit_site_cur >= 0 && mem_limit_site_cur < ( source->cur_size + size ) )
exceeds_limit_site_cur = TRUE;
if ( exceeds_limit_site_total || exceeds_limit_site_cur )
{
FT_TRACE6(("ft_mem_table_set() returns NULL to %s:%lu, allocation request exceeds %s-limit (%lu > %lu)\n",
source->file_name, source->line_no,
( exceeds_limit_site_total ? "site-total" : "site-current" ),
( exceeds_limit_site_total ? source->all_size : source->cur_size ) + size,
( exceeds_limit_site_total ? mem_limit_site_total : mem_limit_site_cur )
));
source = ft_mem_table_get_source( table );
if ( source )
if ( !ft_mem_check_alloc_limiter_for_source( source, size ) )
return NULL;
}
}
/* return NULL if the maximum number of allocations was reached */
if ( table->bound_count &&

12
src/cache/ftcmanag.c vendored
View File

@ -649,12 +649,15 @@
FT_UInt result;
FT_TRACE2(("%s() tries to free %d nodes from list length=%d\n", __FUNCTION__, count, ft_get_length_nodes_list( manager->nodes_list ) ));
FT_TRACE2(( "FTC_Manager_FlushN() tries to"
" free %d nodes from list length=%d\n",
count,
ft_get_length_nodes_list( manager->nodes_list ) ));
/* try to remove `count' nodes from the list */
if ( first == NULL ) /* empty list! */
{
FT_TRACE2(("%s() cannot change empty list\n", __FUNCTION__ ));
FT_TRACE2(("FTC_Manager_FlushN() cannot change empty list\n" ));
return 0;
}
@ -677,7 +680,10 @@
node = prev;
}
FT_TRACE2(("%s() freed %d nodes, list length=%d\n", __FUNCTION__, result, ft_get_length_nodes_list( manager->nodes_list ) ));
FT_TRACE2(( "FTC_Manager_FlushN() freed %d nodes,"
" list length=%d\n",
result,
ft_get_length_nodes_list( manager->nodes_list ) ));
return result;
}

12
src/cache/ftcsbits.c vendored
View File

@ -125,7 +125,11 @@
sbit->buffer = 0;
error = clazz->family_load_glyph( family, gindex, manager, &face );
FT_TRACE2(("ftc_snode_load() got %s from family_load_glyph() err=0x%02x%s\n", error ? "error" : "ok", error, error ? " fallback to BadGlyph" : "" ));
FT_TRACE2(( "ftc_snode_load() got %s from "
"family_load_glyph() err=0x%02x%s\n",
error ? "error" : "ok",
error,
error ? " fallback to BadGlyph" : "" ));
if ( error )
goto BadGlyph;
@ -201,7 +205,8 @@
*asize = 0;
}
FT_TRACE2(("ftc_snode_load() load glyph for gid=%d, err=0x%02x\n", gindex, error));
FT_TRACE2(( "ftc_snode_load() load glyph for gid=%d, err=0x%02x\n",
gindex, error));
return error;
}
@ -403,7 +408,8 @@
}
}
FT_TRACE2(("%s() returns %s\n", __FUNCTION__, result ? "TRUE" : "FALSE"));
FT_TRACE2(( "ftc_snode_compare() returns %s\n",
result ? "TRUE" : "FALSE" ));
return result;
}