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:
parent
13b86ee398
commit
e90d199194
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue