Copy fixes from harfbuzz stable branch. Includes a leak fix, a kerning
2007-04-03 Behdad Esfahbod <behdad@gnome.org> * pango/opentype/harfbuzz-gdef.c (_HB_GDEF_Check_Property): * pango/opentype/harfbuzz-gpos.c (HB_Done_GPOS_Table), (Lookup_PairPos): * pango/opentype/harfbuzz-open.c (Get_Class1): Copy fixes from harfbuzz stable branch. Includes a leak fix, a kerning fix, and an array out-of-bound access fix.
This commit is contained in:
parent
999a6f0575
commit
7341a11691
|
@ -1217,6 +1217,8 @@ FT_Error _HB_GDEF_Check_Property( HB_GDEFHeader* gdef,
|
||||||
*property != desired_attachment_class )
|
*property != desired_attachment_class )
|
||||||
return HB_Err_Not_Covered;
|
return HB_Err_Not_Covered;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
*property = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FT_Err_Ok;
|
return FT_Err_Ok;
|
||||||
|
|
|
@ -193,6 +193,8 @@ FT_Error HB_Done_GPOS_Table( HB_GPOSHeader* gpos )
|
||||||
_HB_OPEN_Free_FeatureList( &gpos->FeatureList, memory );
|
_HB_OPEN_Free_FeatureList( &gpos->FeatureList, memory );
|
||||||
_HB_OPEN_Free_ScriptList( &gpos->ScriptList, memory );
|
_HB_OPEN_Free_ScriptList( &gpos->ScriptList, memory );
|
||||||
|
|
||||||
|
FREE( gpos );
|
||||||
|
|
||||||
return FT_Err_Ok;
|
return FT_Err_Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1650,6 +1652,12 @@ static FT_Error Lookup_PairPos( GPOS_Instance* gpi,
|
||||||
return HB_Err_Invalid_GPOS_SubTable_Format;
|
return HB_Err_Invalid_GPOS_SubTable_Format;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* if we don't have coverage for the second glyph don't skip it for
|
||||||
|
further lookups but reset in_pos back to the first_glyph and let
|
||||||
|
the caller in Do_String_Lookup increment in_pos */
|
||||||
|
if ( error == HB_Err_Not_Covered )
|
||||||
|
buffer->in_pos = first_pos;
|
||||||
|
|
||||||
/* adjusting the `next' glyph */
|
/* adjusting the `next' glyph */
|
||||||
|
|
||||||
if ( pp->ValueFormat2 )
|
if ( pp->ValueFormat2 )
|
||||||
|
|
|
@ -1191,7 +1191,7 @@ static FT_Error Get_Class1( HB_ClassDefFormat1* cdf1,
|
||||||
*index = 0;
|
*index = 0;
|
||||||
|
|
||||||
if ( glyphID >= cdf1->StartGlyph &&
|
if ( glyphID >= cdf1->StartGlyph &&
|
||||||
glyphID <= cdf1->StartGlyph + cdf1->GlyphCount )
|
glyphID < cdf1->StartGlyph + cdf1->GlyphCount )
|
||||||
{
|
{
|
||||||
*class = cva[glyphID - cdf1->StartGlyph];
|
*class = cva[glyphID - cdf1->StartGlyph];
|
||||||
return FT_Err_Ok;
|
return FT_Err_Ok;
|
||||||
|
|
Loading…
Reference in New Issue