Index: src/base/ftdbgmem.c |
diff --git a/src/base/ftdbgmem.c b/src/base/ftdbgmem.c |
index 12fed04bb9490d6842060b33a5c9b1c85d7e2832..6fb86fe77ded968c42420333ad52f727380c12f0 100644 |
--- a/src/base/ftdbgmem.c |
+++ b/src/base/ftdbgmem.c |
@@ -4,7 +4,7 @@ |
/* */ |
/* Memory debugger (body). */ |
/* */ |
-/* Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2009 by */ |
+/* Copyright 2001-2006, 2009, 2013 by */ |
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
/* */ |
/* This file is part of the FreeType project, and may only be used, */ |
@@ -344,85 +344,80 @@ |
ft_mem_table_destroy( FT_MemTable table ) |
{ |
FT_ULong i; |
+ FT_Long leak_count = 0; |
+ FT_ULong leaks = 0; |
FT_DumpMemory( table->memory ); |
- if ( table ) |
+ /* remove all blocks from the table, revealing leaked ones */ |
+ for ( i = 0; i < table->size; i++ ) |
{ |
- FT_Long leak_count = 0; |
- FT_ULong leaks = 0; |
+ FT_MemNode *pnode = table->buckets + i, next, node = *pnode; |
- /* remove all blocks from the table, revealing leaked ones */ |
- for ( i = 0; i < table->size; i++ ) |
+ while ( node ) |
{ |
- FT_MemNode *pnode = table->buckets + i, next, node = *pnode; |
+ next = node->link; |
+ node->link = 0; |
- |
- while ( node ) |
+ if ( node->size > 0 ) |
{ |
- next = node->link; |
- node->link = 0; |
- |
- if ( node->size > 0 ) |
- { |
- printf( |
- "leaked memory block at address %p, size %8ld in (%s:%ld)\n", |
- node->address, node->size, |
- FT_FILENAME( node->source->file_name ), |
- node->source->line_no ); |
+ printf( |
+ "leaked memory block at address %p, size %8ld in (%s:%ld)\n", |
+ node->address, node->size, |
+ FT_FILENAME( node->source->file_name ), |
+ node->source->line_no ); |
- leak_count++; |
- leaks += node->size; |
+ leak_count++; |
+ leaks += node->size; |
- ft_mem_table_free( table, node->address ); |
- } |
+ ft_mem_table_free( table, node->address ); |
+ } |
- node->address = NULL; |
- node->size = 0; |
+ node->address = NULL; |
+ node->size = 0; |
- ft_mem_table_free( table, node ); |
- node = next; |
- } |
- table->buckets[i] = 0; |
+ ft_mem_table_free( table, node ); |
+ node = next; |
} |
+ table->buckets[i] = 0; |
+ } |
- ft_mem_table_free( table, table->buckets ); |
- table->buckets = NULL; |
- |
- table->size = 0; |
- table->nodes = 0; |
+ ft_mem_table_free( table, table->buckets ); |
+ table->buckets = NULL; |
- /* remove all sources */ |
- for ( i = 0; i < FT_MEM_SOURCE_BUCKETS; i++ ) |
- { |
- FT_MemSource source, next; |
+ table->size = 0; |
+ table->nodes = 0; |
+ /* remove all sources */ |
+ for ( i = 0; i < FT_MEM_SOURCE_BUCKETS; i++ ) |
+ { |
+ FT_MemSource source, next; |
- for ( source = table->sources[i]; source != NULL; source = next ) |
- { |
- next = source->link; |
- ft_mem_table_free( table, source ); |
- } |
- table->sources[i] = NULL; |
+ for ( source = table->sources[i]; source != NULL; source = next ) |
+ { |
+ next = source->link; |
+ ft_mem_table_free( table, source ); |
} |
- printf( |
- "FreeType: total memory allocations = %ld\n", table->alloc_total ); |
- printf( |
- "FreeType: maximum memory footprint = %ld\n", table->alloc_max ); |
+ table->sources[i] = NULL; |
+ } |
- ft_mem_table_free( table, table ); |
+ printf( "FreeType: total memory allocations = %ld\n", |
+ table->alloc_total ); |
+ printf( "FreeType: maximum memory footprint = %ld\n", |
+ table->alloc_max ); |
- if ( leak_count > 0 ) |
- ft_mem_debug_panic( |
- "FreeType: %ld bytes of memory leaked in %ld blocks\n", |
- leaks, leak_count ); |
+ ft_mem_table_free( table, table ); |
- printf( "FreeType: no memory leaks detected\n" ); |
- } |
+ if ( leak_count > 0 ) |
+ ft_mem_debug_panic( |
+ "FreeType: %ld bytes of memory leaked in %ld blocks\n", |
+ leaks, leak_count ); |
+ |
+ printf( "FreeType: no memory leaks detected\n" ); |
} |