Bug 463430 – Gets stuck while "formatting message"

2007-08-21  Behdad Esfahbod  <behdad@gnome.org>

        Bug 463430 – Gets stuck while "formatting message"

        * pango/opentype/harfbuzz-gpos.c (Lookup_PairPos1),
        (Lookup_PairPos2), (Lookup_PairPos), (Do_ContextPos):
        * pango/opentype/harfbuzz-gsub.c (Do_ContextSubst):
        Change type of intermediate index variable from FT_UShort to
        FT_ULong as it was overlowing with more than 65536 glyphs.
This commit is contained in:
Behdad Esfahbod 2007-08-21 08:03:26 +00:00 committed by Behdad Esfahbod
parent 13b86ee398
commit e90d199194
2 changed files with 11 additions and 6 deletions

View File

@ -1518,7 +1518,7 @@ static void Free_PairPos( HB_GPOS_SubTable* st,
static FT_Error Lookup_PairPos1( GPOS_Instance* gpi, static FT_Error Lookup_PairPos1( GPOS_Instance* gpi,
HB_PairPosFormat1* ppf1, HB_PairPosFormat1* ppf1,
HB_Buffer buffer, HB_Buffer buffer,
FT_UShort first_pos, FT_ULong first_pos,
FT_UShort index, FT_UShort index,
FT_UShort format1, FT_UShort format1,
FT_UShort format2 ) FT_UShort format2 )
@ -1560,7 +1560,7 @@ static FT_Error Lookup_PairPos1( GPOS_Instance* gpi,
static FT_Error Lookup_PairPos2( GPOS_Instance* gpi, static FT_Error Lookup_PairPos2( GPOS_Instance* gpi,
HB_PairPosFormat2* ppf2, HB_PairPosFormat2* ppf2,
HB_Buffer buffer, HB_Buffer buffer,
FT_UShort first_pos, FT_ULong first_pos,
FT_UShort format1, FT_UShort format1,
FT_UShort format2 ) FT_UShort format2 )
{ {
@ -1600,7 +1600,8 @@ static FT_Error Lookup_PairPos( GPOS_Instance* gpi,
int nesting_level ) int nesting_level )
{ {
FT_Error error; FT_Error error;
FT_UShort index, property, first_pos; FT_UShort index, property;
FT_ULong first_pos;
HB_GPOSHeader* gpos = gpi->gpos; HB_GPOSHeader* gpos = gpi->gpos;
HB_PairPos* pp = &st->pair; HB_PairPos* pp = &st->pair;
@ -1631,8 +1632,12 @@ static FT_Error Lookup_PairPos( GPOS_Instance* gpi,
return error; return error;
if ( buffer->in_pos == buffer->in_length ) if ( buffer->in_pos == buffer->in_length )
{
buffer->in_pos = first_pos;
return HB_Err_Not_Covered; return HB_Err_Not_Covered;
}
(buffer->in_pos)++; (buffer->in_pos)++;
} }
switch ( pp->PosFormat ) switch ( pp->PosFormat )
@ -3137,7 +3142,7 @@ static FT_Error Do_ContextPos( GPOS_Instance* gpi,
int nesting_level ) int nesting_level )
{ {
FT_Error error; FT_Error error;
FT_UShort i, old_pos; FT_ULong i, old_pos;
i = 0; i = 0;

View File

@ -1130,7 +1130,7 @@ static FT_Error Do_ContextSubst( HB_GSUBHeader* gsub,
int nesting_level ) int nesting_level )
{ {
FT_Error error; FT_Error error;
FT_UShort i, old_pos; FT_ULong i, old_pos;
i = 0; i = 0;