@ -302,46 +302,6 @@
}
static FT_MemTable
ft_mem_table_new ( FT_Memory memory )
{
FT_MemTable table ;
table = ( FT_MemTable ) memory - > alloc ( memory , sizeof ( * table ) ) ;
if ( ! table )
goto Exit ;
FT_ZERO ( table ) ;
table - > size = FT_MEM_SIZE_MIN ;
table - > nodes = 0 ;
table - > memory = memory ;
table - > memory_user = memory - > user ;
table - > alloc = memory - > alloc ;
table - > realloc = memory - > realloc ;
table - > free = memory - > free ;
table - > buckets = ( FT_MemNode * )
memory - > alloc (
memory ,
table - > size * ( FT_Long ) sizeof ( FT_MemNode ) ) ;
if ( table - > buckets )
FT_ARRAY_ZERO ( table - > buckets , table - > size ) ;
else
{
memory - > free ( memory , table ) ;
table = NULL ;
}
Exit :
return table ;
}
static void
ft_mem_table_destroy ( FT_MemTable table )
{
@ -413,8 +373,6 @@
printf ( " FreeType: maximum memory footprint = %ld \n " ,
table - > alloc_max ) ;
ft_mem_table_free ( table , table ) ;
if ( leak_count > 0 )
ft_mem_debug_panic (
" FreeType: %ld bytes of memory leaked in %ld blocks \n " ,
@ -821,17 +779,30 @@
}
extern FT_Int
extern void
ft_mem_debug_init ( FT_Memory memory )
{
FT_MemTable table ;
FT_Int result = 0 ;
if ( ft_getenv ( " FT2_DEBUG_MEMORY " ) )
if ( ! ft_getenv ( " FT2_DEBUG_MEMORY " ) )
return ;
table = ( FT_MemTable ) memory - > alloc ( memory , sizeof ( * table ) ) ;
if ( table )
{
table = ft_mem_table_new ( memory ) ;
if ( table )
FT_ZERO ( table ) ;
table - > memory = memory ;
table - > memory_user = memory - > user ;
table - > alloc = memory - > alloc ;
table - > realloc = memory - > realloc ;
table - > free = memory - > free ;
ft_mem_table_resize ( table ) ;
if ( table - > size )
{
const char * p ;
@ -876,28 +847,29 @@
if ( keep_alive > 0 )
table - > keep_alive = 1 ;
}
result = 1 ;
}
else
memory - > free ( memory , table ) ;
}
return result ;
}
extern void
ft_mem_debug_done ( FT_Memory memory )
{
FT_MemTable table = ( FT_MemTable ) memory - > user ;
if ( memory - > free = = ft_mem_debug_free )
{
FT_MemTable table = ( FT_MemTable ) memory - > user ;
if ( table )
{
ft_mem_table_destroy ( table ) ;
memory - > free = table - > free ;
memory - > realloc = table - > realloc ;
memory - > alloc = table - > alloc ;
memory - > user = table - > memory_user ;
ft_mem_table_destroy ( table ) ;
memory - > user = NULL ;
memory - > free ( memory , table ) ;
}
}