diff -up pango-1.14.9/pango/opentype/harfbuzz-gdef.c.synthetic-gdef pango-1.14.9/pango/opentype/harfbuzz-gdef.c --- pango-1.14.9/pango/opentype/harfbuzz-gdef.c.synthetic-gdef 2010-03-02 15:38:26.000000000 -0500 +++ pango-1.14.9/pango/opentype/harfbuzz-gdef.c 2010-03-02 15:48:05.000000000 -0500 @@ -1023,7 +1023,7 @@ FT_Error HB_GDEF_Build_ClassDefinition( goto Fail1; } - if ( gcrr[count - 1].End != num_glyphs - 1 ) + if ( gcrr[count - 1].End + 1 < num_glyphs ) { if ( ALLOC_ARRAY( ngc[count], ( num_glyphs - gcrr[count - 1].End + 2 ) / 4, @@ -1038,7 +1038,9 @@ FT_Error HB_GDEF_Build_ClassDefinition( FT_UShort ) ) goto Fail2; } - + else + num_glyphs = 1; + gdef->LastGlyph = num_glyphs - 1; gdef->MarkAttachClassDef_offset = 0L; @@ -1096,6 +1098,8 @@ FT_Error _HB_GDEF_Add_Glyph_Property( H HB_ClassRangeRecord* gcrr; FT_UShort** ngc; + if ( glyphID >= gdef->LastGlyph ) + return 0; error = _HB_OPEN_Get_Class( &gdef->GlyphClassDef, glyphID, &class, &index ); if ( error && error != HB_Err_Not_Covered ) diff -up pango-1.14.9/pango/pango-ot-info.c.synthetic-gdef pango-1.14.9/pango/pango-ot-info.c