diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | pango/opentype/harfbuzz-gpos.c | 15 | ||||
-rw-r--r-- | pango/opentype/harfbuzz-gsub.c | 2 |
3 files changed, 21 insertions, 6 deletions
@@ -1,3 +1,13 @@ +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. + 2007-08-20 Behdad Esfahbod <behdad@gnome.org> * README: Remove reference to required version of glib. It falls diff --git a/pango/opentype/harfbuzz-gpos.c b/pango/opentype/harfbuzz-gpos.c index 513f3fb5..6f0476ab 100644 --- a/pango/opentype/harfbuzz-gpos.c +++ b/pango/opentype/harfbuzz-gpos.c @@ -1518,7 +1518,7 @@ static void Free_PairPos( HB_GPOS_SubTable* st, static FT_Error Lookup_PairPos1( GPOS_Instance* gpi, HB_PairPosFormat1* ppf1, HB_Buffer buffer, - FT_UShort first_pos, + FT_ULong first_pos, FT_UShort index, FT_UShort format1, FT_UShort format2 ) @@ -1560,7 +1560,7 @@ static FT_Error Lookup_PairPos1( GPOS_Instance* gpi, static FT_Error Lookup_PairPos2( GPOS_Instance* gpi, HB_PairPosFormat2* ppf2, HB_Buffer buffer, - FT_UShort first_pos, + FT_ULong first_pos, FT_UShort format1, FT_UShort format2 ) { @@ -1600,7 +1600,8 @@ static FT_Error Lookup_PairPos( GPOS_Instance* gpi, int nesting_level ) { FT_Error error; - FT_UShort index, property, first_pos; + FT_UShort index, property; + FT_ULong first_pos; HB_GPOSHeader* gpos = gpi->gpos; HB_PairPos* pp = &st->pair; @@ -1631,8 +1632,12 @@ static FT_Error Lookup_PairPos( GPOS_Instance* gpi, return error; if ( buffer->in_pos == buffer->in_length ) - return HB_Err_Not_Covered; + { + buffer->in_pos = first_pos; + return HB_Err_Not_Covered; + } (buffer->in_pos)++; + } switch ( pp->PosFormat ) @@ -3137,7 +3142,7 @@ static FT_Error Do_ContextPos( GPOS_Instance* gpi, int nesting_level ) { FT_Error error; - FT_UShort i, old_pos; + FT_ULong i, old_pos; i = 0; diff --git a/pango/opentype/harfbuzz-gsub.c b/pango/opentype/harfbuzz-gsub.c index 00db6e86..23b87b85 100644 --- a/pango/opentype/harfbuzz-gsub.c +++ b/pango/opentype/harfbuzz-gsub.c @@ -1130,7 +1130,7 @@ static FT_Error Do_ContextSubst( HB_GSUBHeader* gsub, int nesting_level ) { FT_Error error; - FT_UShort i, old_pos; + FT_ULong i, old_pos; i = 0; |