Index: third_party/freetype/src/base/ftdbgmem.c |
diff --git a/third_party/freetype/src/base/ftdbgmem.c b/third_party/freetype/src/base/ftdbgmem.c |
index 6fb86fe77ded968c42420333ad52f727380c12f0..6f20313b345c89ad6fff6c6e851709b2dccae707 100644 |
--- a/third_party/freetype/src/base/ftdbgmem.c |
+++ b/third_party/freetype/src/base/ftdbgmem.c |
@@ -4,7 +4,7 @@ |
/* */ |
/* Memory debugger (body). */ |
/* */ |
-/* Copyright 2001-2006, 2009, 2013 by */ |
+/* Copyright 2001-2015 by */ |
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
/* */ |
/* This file is part of the FreeType project, and may only be used, */ |
@@ -35,7 +35,7 @@ |
#include FT_CONFIG_STANDARD_LIBRARY_H |
- FT_BASE_DEF( const char* ) _ft_debug_file = 0; |
+ FT_BASE_DEF( const char* ) _ft_debug_file = NULL; |
FT_BASE_DEF( long ) _ft_debug_lineno = 0; |
extern void |
@@ -47,7 +47,7 @@ |
typedef struct FT_MemTableRec_* FT_MemTable; |
-#define FT_MEM_VAL( addr ) ((FT_PtrDist)(FT_Pointer)( addr )) |
+#define FT_MEM_VAL( addr ) ( (FT_PtrDist)(FT_Pointer)( addr ) ) |
/* |
* This structure holds statistics for a single allocation/release |
@@ -76,7 +76,7 @@ |
/* |
- * We don't need a resizable array for the memory sources, because |
+ * We don't need a resizable array for the memory sources because |
* their number is pretty limited within FreeType. |
*/ |
#define FT_MEM_SOURCE_BUCKETS 128 |
@@ -85,8 +85,8 @@ |
* This structure holds information related to a single allocated |
* memory block. If KEEPALIVE is defined, blocks that are freed by |
* FreeType are never released to the system. Instead, their `size' |
- * field is set to -size. This is mainly useful to detect double frees, |
- * at the price of large memory footprint during execution. |
+ * field is set to `-size'. This is mainly useful to detect double |
+ * frees, at the price of a large memory footprint during execution. |
*/ |
typedef struct FT_MemNodeRec_ |
{ |
@@ -111,20 +111,20 @@ |
*/ |
typedef struct FT_MemTableRec_ |
{ |
- FT_ULong size; |
- FT_ULong nodes; |
+ FT_Long size; |
+ FT_Long nodes; |
FT_MemNode* buckets; |
- FT_ULong alloc_total; |
- FT_ULong alloc_current; |
- FT_ULong alloc_max; |
- FT_ULong alloc_count; |
+ FT_Long alloc_total; |
+ FT_Long alloc_current; |
+ FT_Long alloc_max; |
+ FT_Long alloc_count; |
FT_Bool bound_total; |
- FT_ULong alloc_total_max; |
+ FT_Long alloc_total_max; |
FT_Bool bound_count; |
- FT_ULong alloc_count_max; |
+ FT_Long alloc_count_max; |
FT_MemSource sources[FT_MEM_SOURCE_BUCKETS]; |
@@ -142,14 +142,14 @@ |
#define FT_MEM_SIZE_MIN 7 |
#define FT_MEM_SIZE_MAX 13845163 |
-#define FT_FILENAME( x ) ((x) ? (x) : "unknown file") |
+#define FT_FILENAME( x ) ( (x) ? (x) : "unknown file" ) |
/* |
* Prime numbers are ugly to handle. It would be better to implement |
* L-Hashing, which is 10% faster and doesn't require divisions. |
*/ |
- static const FT_UInt ft_mem_primes[] = |
+ static const FT_Int ft_mem_primes[] = |
{ |
7, |
11, |
@@ -189,10 +189,10 @@ |
}; |
- static FT_ULong |
- ft_mem_closest_prime( FT_ULong num ) |
+ static FT_Long |
+ ft_mem_closest_prime( FT_Long num ) |
{ |
- FT_UInt i; |
+ size_t i; |
for ( i = 0; |
@@ -204,7 +204,7 @@ |
} |
- extern void |
+ static void |
ft_mem_debug_panic( const char* fmt, |
... ) |
{ |
@@ -254,19 +254,20 @@ |
static void |
ft_mem_table_resize( FT_MemTable table ) |
{ |
- FT_ULong new_size; |
+ FT_Long new_size; |
new_size = ft_mem_closest_prime( table->nodes ); |
if ( new_size != table->size ) |
{ |
FT_MemNode* new_buckets; |
- FT_ULong i; |
+ FT_Long i; |
new_buckets = (FT_MemNode *) |
- ft_mem_table_alloc( table, |
- new_size * sizeof ( FT_MemNode ) ); |
+ ft_mem_table_alloc( |
+ table, |
+ new_size * (FT_Long)sizeof ( FT_MemNode ) ); |
if ( new_buckets == NULL ) |
return; |
@@ -282,7 +283,7 @@ |
while ( node ) |
{ |
next = node->link; |
- hash = FT_MEM_VAL( node->address ) % new_size; |
+ hash = FT_MEM_VAL( node->address ) % (FT_PtrDist)new_size; |
pnode = new_buckets + hash; |
node->link = pnode[0]; |
@@ -325,8 +326,9 @@ |
table->free = memory->free; |
table->buckets = (FT_MemNode *) |
- memory->alloc( memory, |
- table->size * sizeof ( FT_MemNode ) ); |
+ memory->alloc( |
+ memory, |
+ table->size * (FT_Long)sizeof ( FT_MemNode ) ); |
if ( table->buckets ) |
FT_ARRAY_ZERO( table->buckets, table->size ); |
else |
@@ -343,9 +345,9 @@ |
static void |
ft_mem_table_destroy( FT_MemTable table ) |
{ |
- FT_ULong i; |
- FT_Long leak_count = 0; |
- FT_ULong leaks = 0; |
+ FT_Long i; |
+ FT_Long leak_count = 0; |
+ FT_Long leaks = 0; |
FT_DumpMemory( table->memory ); |
@@ -359,7 +361,7 @@ |
while ( node ) |
{ |
next = node->link; |
- node->link = 0; |
+ node->link = NULL; |
if ( node->size > 0 ) |
{ |
@@ -381,7 +383,7 @@ |
ft_mem_table_free( table, node ); |
node = next; |
} |
- table->buckets[i] = 0; |
+ table->buckets[i] = NULL; |
} |
ft_mem_table_free( table, table->buckets ); |
@@ -430,7 +432,7 @@ |
hash = FT_MEM_VAL( address ); |
- pnode = table->buckets + ( hash % table->size ); |
+ pnode = table->buckets + ( hash % (FT_PtrDist)table->size ); |
for (;;) |
{ |
@@ -466,8 +468,8 @@ |
if ( node == NULL ) |
break; |
- if ( node->file_name == _ft_debug_file && |
- node->line_no == _ft_debug_lineno ) |
+ if ( node->file_name == _ft_debug_file && |
+ node->line_no == _ft_debug_lineno ) |
goto Exit; |
pnode = &node->link; |
@@ -485,11 +487,11 @@ |
node->max_blocks = 0; |
node->all_blocks = 0; |
- node->cur_size = 0; |
- node->max_size = 0; |
- node->all_size = 0; |
+ node->cur_size = 0; |
+ node->max_size = 0; |
+ node->all_size = 0; |
- node->cur_max = 0; |
+ node->cur_max = 0; |
node->link = NULL; |
node->hash = hash; |
@@ -503,7 +505,7 @@ |
static void |
ft_mem_table_set( FT_MemTable table, |
FT_Byte* address, |
- FT_ULong size, |
+ FT_Long size, |
FT_Long delta ) |
{ |
FT_MemNode *pnode, node; |
@@ -558,7 +560,7 @@ |
source->max_blocks = source->cur_blocks; |
} |
- if ( size > (FT_ULong)source->cur_max ) |
+ if ( size > source->cur_max ) |
source->cur_max = size; |
if ( delta != 0 ) |
@@ -671,7 +673,7 @@ |
} |
- extern FT_Pointer |
+ static FT_Pointer |
ft_mem_debug_alloc( FT_Memory memory, |
FT_Long size ) |
{ |
@@ -688,14 +690,14 @@ |
return NULL; |
/* return NULL if this allocation would overflow the maximum heap size */ |
- if ( table->bound_total && |
- table->alloc_total_max - table->alloc_current > (FT_ULong)size ) |
+ if ( table->bound_total && |
+ table->alloc_total_max - table->alloc_current > size ) |
return NULL; |
block = (FT_Byte *)ft_mem_table_alloc( table, size ); |
if ( block ) |
{ |
- ft_mem_table_set( table, block, (FT_ULong)size, 0 ); |
+ ft_mem_table_set( table, block, size, 0 ); |
table->alloc_count++; |
} |
@@ -707,7 +709,7 @@ |
} |
- extern void |
+ static void |
ft_mem_debug_free( FT_Memory memory, |
FT_Pointer block ) |
{ |
@@ -731,7 +733,7 @@ |
} |
- extern FT_Pointer |
+ static FT_Pointer |
ft_mem_debug_realloc( FT_Memory memory, |
FT_Long cur_size, |
FT_Long new_size, |
@@ -787,21 +789,22 @@ |
table->alloc_count >= table->alloc_count_max ) |
return NULL; |
- delta = (FT_Long)( new_size - cur_size ); |
+ delta = new_size - cur_size; |
/* return NULL if this allocation would overflow the maximum heap size */ |
- if ( delta > 0 && |
- table->bound_total && |
- table->alloc_current + (FT_ULong)delta > table->alloc_total_max ) |
+ if ( delta > 0 && |
+ table->bound_total && |
+ table->alloc_current + delta > table->alloc_total_max ) |
return NULL; |
- new_block = (FT_Byte *)ft_mem_table_alloc( table, new_size ); |
+ new_block = (FT_Pointer)ft_mem_table_alloc( table, new_size ); |
if ( new_block == NULL ) |
return NULL; |
ft_mem_table_set( table, (FT_Byte*)new_block, new_size, delta ); |
- ft_memcpy( new_block, block, cur_size < new_size ? cur_size : new_size ); |
+ ft_memcpy( new_block, block, cur_size < new_size ? (size_t)cur_size |
+ : (size_t)new_size ); |
ft_mem_table_remove( table, (FT_Byte*)block, delta ); |
@@ -844,7 +847,7 @@ |
if ( total_max > 0 ) |
{ |
table->bound_total = 1; |
- table->alloc_total_max = (FT_ULong)total_max; |
+ table->alloc_total_max = total_max; |
} |
} |
@@ -857,7 +860,7 @@ |
if ( total_count > 0 ) |
{ |
table->bound_count = 1; |
- table->alloc_count_max = (FT_ULong)total_count; |
+ table->alloc_count_max = total_count; |
} |
} |
@@ -896,7 +899,6 @@ |
} |
- |
static int |
ft_mem_source_compare( const void* p1, |
const void* p2 ) |
@@ -925,7 +927,7 @@ |
FT_MemSource* bucket = table->sources; |
FT_MemSource* limit = bucket + FT_MEM_SOURCE_BUCKETS; |
FT_MemSource* sources; |
- FT_UInt nn, count; |
+ FT_Int nn, count; |
const char* fmt; |
@@ -939,8 +941,9 @@ |
count++; |
} |
- sources = (FT_MemSource*)ft_mem_table_alloc( |
- table, sizeof ( *sources ) * count ); |
+ sources = (FT_MemSource*) |
+ ft_mem_table_alloc( |
+ table, count * (FT_Long)sizeof ( *sources ) ); |
count = 0; |
for ( bucket = table->sources; bucket < limit; bucket++ ) |
@@ -952,7 +955,10 @@ |
sources[count++] = source; |
} |
- ft_qsort( sources, count, sizeof ( *sources ), ft_mem_source_compare ); |
+ ft_qsort( sources, |
+ (size_t)count, |
+ sizeof ( *sources ), |
+ ft_mem_source_compare ); |
printf( "FreeType Memory Dump: " |
"current=%ld max=%ld total=%ld count=%ld\n", |