Improve handling of invalid glyph indices in char->index functions.

* src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Use a
loop.
This commit is contained in:
Behdad Esfahbod 2010-02-26 23:48:53 +01:00 committed by Werner Lemberg
parent 10cf388795
commit 2415cbf365
2 changed files with 17 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2010-02-26 Behdad Esfahbod <behdad@behdad.org>
Improve handling of invalid glyph indices in char->index functions.
* src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Use a
loop.
2010-02-18 Chris Liddell <chris.liddell@artifex.com>
Fix Savannah bug #28905.

View File

@ -3095,7 +3095,7 @@
}
result = cmap->clazz->char_index( cmap, (FT_UInt32)charcode );
}
return result;
return result;
}
@ -3112,11 +3112,13 @@
if ( face && face->charmap )
{
gindex = FT_Get_Char_Index( face, 0 );
if ( gindex == 0 )
result = FT_Get_Next_Char( face, 0, &gindex );
if ( gindex == 0 || gindex >= (FT_UInt)face->num_glyphs )
do {
result = FT_Get_Next_Char( face, 0, &gindex );
} while ( gindex >= (FT_UInt)face->num_glyphs );
}
if ( agindex )
if ( agindex )
*agindex = gindex;
return result;
@ -3140,7 +3142,10 @@
FT_CMap cmap = FT_CMAP( face->charmap );
gindex = cmap->clazz->char_next( cmap, &code );
do {
gindex = cmap->clazz->char_next( cmap, &code );
} while ( gindex >= (FT_UInt)face->num_glyphs );
result = ( gindex == 0 ) ? 0 : code;
}