Index: third_party/freetype/src/truetype/ttpload.c |
diff --git a/third_party/freetype/src/truetype/ttpload.c b/third_party/freetype/src/truetype/ttpload.c |
index 9991925425280909b91e56e854813f6f42202f3a..4647c938aeadf3ca3d4ba55fd9236ebd9e3d0926 100644 |
--- a/third_party/freetype/src/truetype/ttpload.c |
+++ b/third_party/freetype/src/truetype/ttpload.c |
@@ -4,7 +4,7 @@ |
/* */ |
/* TrueType-specific tables loader (body). */ |
/* */ |
-/* Copyright 1996-2002, 2004-2013 by */ |
+/* Copyright 1996-2015 by */ |
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
/* */ |
/* This file is part of the FreeType project, and may only be used, */ |
@@ -118,20 +118,20 @@ |
/* we only handle the case where `maxp' gives a larger value */ |
if ( face->num_locations <= (FT_ULong)face->root.num_glyphs ) |
{ |
- FT_Long new_loca_len = |
- ( (FT_Long)( face->root.num_glyphs ) + 1 ) << shift; |
+ FT_ULong new_loca_len = |
+ ( (FT_ULong)face->root.num_glyphs + 1 ) << shift; |
TT_Table entry = face->dir_tables; |
TT_Table limit = entry + face->num_tables; |
- FT_Long pos = FT_Stream_Pos( stream ); |
+ FT_Long pos = (FT_Long)FT_STREAM_POS(); |
FT_Long dist = 0x7FFFFFFFL; |
/* compute the distance to next table in font file */ |
for ( ; entry < limit; entry++ ) |
{ |
- FT_Long diff = entry->Offset - pos; |
+ FT_Long diff = (FT_Long)entry->Offset - pos; |
if ( diff > 0 && diff < dist ) |
@@ -141,17 +141,25 @@ |
if ( entry == limit ) |
{ |
/* `loca' is the last table */ |
- dist = stream->size - pos; |
+ dist = (FT_Long)stream->size - pos; |
} |
- if ( new_loca_len <= dist ) |
+ if ( new_loca_len <= (FT_ULong)dist ) |
{ |
- face->num_locations = face->root.num_glyphs + 1; |
+ face->num_locations = (FT_ULong)face->root.num_glyphs + 1; |
table_len = new_loca_len; |
FT_TRACE2(( "adjusting num_locations to %d\n", |
face->num_locations )); |
} |
+ else |
+ { |
+ face->root.num_glyphs = face->num_locations |
+ ? (FT_Long)face->num_locations - 1 : 0; |
+ |
+ FT_TRACE2(( "adjusting num_glyphs to %d\n", |
+ face->root.num_glyphs )); |
+ } |
} |
} |