| Index: third_party/freetype/src/psaux/afmparse.c
 | 
| diff --git a/third_party/freetype/src/psaux/afmparse.c b/third_party/freetype/src/psaux/afmparse.c
 | 
| index 6a40e110dc69915a1daf4033af23d7527c7ee541..3ad44ec7240fe4c376daeee1f3ce79c6440c2636 100644
 | 
| --- a/third_party/freetype/src/psaux/afmparse.c
 | 
| +++ b/third_party/freetype/src/psaux/afmparse.c
 | 
| @@ -4,7 +4,7 @@
 | 
|  /*                                                                         */
 | 
|  /*    AFM parser (body).                                                   */
 | 
|  /*                                                                         */
 | 
| -/*  Copyright 2006-2010, 2012, 2013 by                                     */
 | 
| +/*  Copyright 2006-2015 by                                                 */
 | 
|  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 | 
|  /*                                                                         */
 | 
|  /*  This file is part of the FreeType project, and may only be used,       */
 | 
| @@ -75,8 +75,8 @@
 | 
|  #define AFM_STREAM_KEY_BEGIN( stream )    \
 | 
|            (char*)( (stream)->cursor - 1 )
 | 
|  
 | 
| -#define AFM_STREAM_KEY_LEN( stream, key )       \
 | 
| -          ( (char*)(stream)->cursor - key - 1 )
 | 
| +#define AFM_STREAM_KEY_LEN( stream, key )           \
 | 
| +          (FT_Offset)( (char*)(stream)->cursor - key - 1 )
 | 
|  
 | 
|  #define AFM_STATUS_EOC( stream ) \
 | 
|            ( (stream)->status >= AFM_STREAM_STATUS_EOC )
 | 
| @@ -369,11 +369,11 @@
 | 
|    FT_LOCAL_DEF( FT_Int )
 | 
|    afm_parser_read_vals( AFM_Parser  parser,
 | 
|                          AFM_Value   vals,
 | 
| -                        FT_UInt     n )
 | 
| +                        FT_Int      n )
 | 
|    {
 | 
|      AFM_Stream  stream = parser->stream;
 | 
|      char*       str;
 | 
| -    FT_UInt     i;
 | 
| +    FT_Int      i;
 | 
|  
 | 
|  
 | 
|      if ( n > AFM_MAX_ARGUMENTS )
 | 
| @@ -446,7 +446,7 @@
 | 
|                         FT_Offset*  len )
 | 
|    {
 | 
|      AFM_Stream  stream = parser->stream;
 | 
| -    char*       key    = 0;  /* make stupid compiler happy */
 | 
| +    char*       key    = NULL;  /* make stupid compiler happy */
 | 
|  
 | 
|  
 | 
|      if ( line )
 | 
| @@ -562,7 +562,7 @@
 | 
|    }
 | 
|  
 | 
|  
 | 
| -  FT_LOCAL_DEF( FT_Error )
 | 
| +  static FT_Error
 | 
|    afm_parser_read_int( AFM_Parser  parser,
 | 
|                         FT_Int*     aint )
 | 
|    {
 | 
| @@ -590,11 +590,17 @@
 | 
|      char*          key;
 | 
|      FT_Offset      len;
 | 
|      int            n = -1;
 | 
| +    FT_Int         tmp;
 | 
|  
 | 
|  
 | 
| -    if ( afm_parser_read_int( parser, &fi->NumTrackKern ) )
 | 
| +    if ( afm_parser_read_int( parser, &tmp ) )
 | 
|          goto Fail;
 | 
|  
 | 
| +    if ( tmp < 0 )
 | 
| +      goto Fail;
 | 
| +
 | 
| +    fi->NumTrackKern = (FT_UInt)tmp;
 | 
| +
 | 
|      if ( fi->NumTrackKern )
 | 
|      {
 | 
|        FT_Memory  memory = parser->memory;
 | 
| @@ -615,7 +621,7 @@
 | 
|        case AFM_TOKEN_TRACKKERN:
 | 
|          n++;
 | 
|  
 | 
| -        if ( n >= fi->NumTrackKern )
 | 
| +        if ( n >= (int)fi->NumTrackKern )
 | 
|            goto Fail;
 | 
|  
 | 
|          tk = fi->TrackKerns + n;
 | 
| @@ -639,7 +645,7 @@
 | 
|        case AFM_TOKEN_ENDTRACKKERN:
 | 
|        case AFM_TOKEN_ENDKERNDATA:
 | 
|        case AFM_TOKEN_ENDFONTMETRICS:
 | 
| -        fi->NumTrackKern = n + 1;
 | 
| +        fi->NumTrackKern = (FT_UInt)( n + 1 );
 | 
|          return FT_Err_Ok;
 | 
|  
 | 
|        case AFM_TOKEN_UNKNOWN:
 | 
| @@ -688,11 +694,17 @@
 | 
|      char*         key;
 | 
|      FT_Offset     len;
 | 
|      int           n = -1;
 | 
| +    FT_Int        tmp;
 | 
| +
 | 
|  
 | 
| +    if ( afm_parser_read_int( parser, &tmp ) )
 | 
| +      goto Fail;
 | 
|  
 | 
| -    if ( afm_parser_read_int( parser, &fi->NumKernPair ) )
 | 
| +    if ( tmp < 0 )
 | 
|        goto Fail;
 | 
|  
 | 
| +    fi->NumKernPair = (FT_UInt)tmp;
 | 
| +
 | 
|      if ( fi->NumKernPair )
 | 
|      {
 | 
|        FT_Memory  memory = parser->memory;
 | 
| @@ -720,7 +732,7 @@
 | 
|  
 | 
|            n++;
 | 
|  
 | 
| -          if ( n >= fi->NumKernPair )
 | 
| +          if ( n >= (int)fi->NumKernPair )
 | 
|              goto Fail;
 | 
|  
 | 
|            kp = fi->KernPairs + n;
 | 
| @@ -733,8 +745,9 @@
 | 
|            if ( r < 3 )
 | 
|              goto Fail;
 | 
|  
 | 
| -          kp->index1 = shared_vals[0].u.i;
 | 
| -          kp->index2 = shared_vals[1].u.i;
 | 
| +          /* index values can't be negative */
 | 
| +          kp->index1 = shared_vals[0].u.u;
 | 
| +          kp->index2 = shared_vals[1].u.u;
 | 
|            if ( token == AFM_TOKEN_KPY )
 | 
|            {
 | 
|              kp->x = 0;
 | 
| @@ -752,7 +765,7 @@
 | 
|        case AFM_TOKEN_ENDKERNPAIRS:
 | 
|        case AFM_TOKEN_ENDKERNDATA:
 | 
|        case AFM_TOKEN_ENDFONTMETRICS:
 | 
| -        fi->NumKernPair = n + 1;
 | 
| +        fi->NumKernPair = (FT_UInt)( n + 1 );
 | 
|          ft_qsort( fi->KernPairs, fi->NumKernPair,
 | 
|                    sizeof ( AFM_KernPairRec ),
 | 
|                    afm_compare_kern_pairs );
 | 
| @@ -815,7 +828,7 @@
 | 
|  
 | 
|    static FT_Error
 | 
|    afm_parser_skip_section( AFM_Parser  parser,
 | 
| -                           FT_UInt     n,
 | 
| +                           FT_Int      n,
 | 
|                             AFM_Token   end_section )
 | 
|    {
 | 
|      char*      key;
 | 
| 
 |