revision 1.8 date: 2001/03/05 04:44:33; author: werner; state: Exp; lines: +15 -9 ftxgpos.c: Backtrack and lookahead data in type 8 tables are optional. ftxgsub.c: Backtrack and lookahead data in type 6 tables are optional. Index: ftxgpos.c =================================================================== RCS file: /cvs/freetype/freetype/lib/extend/ftxgpos.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -p -r1.7 -r1.8 --- ftxgpos.c 2000/05/26 15:44:04 1.7 +++ ftxgpos.c 2001/03/05 04:44:33 1.8 @@ -4715,19 +4715,25 @@ FORGET_Frame(); + /* backtrack and lookahead data can be optional */ + cur_offset = FILE_Pos(); - if ( FILE_Seek( backtrack_offset ) || - ( error = Load_ClassDefinition( &ccpf2->BacktrackClassDef, count, - input ) ) != TT_Err_Ok ) - goto Fail5; + if ( backtrack_offset != base_offset ) { + if ( FILE_Seek( backtrack_offset ) || + ( error = Load_ClassDefinition( &ccpf2->BacktrackClassDef, count, + input ) ) != TT_Err_Ok ) + goto Fail5; + } if ( FILE_Seek( input_offset ) || ( error = Load_ClassDefinition( &ccpf2->InputClassDef, count, input ) ) != TT_Err_Ok ) goto Fail4; - if ( FILE_Seek( lookahead_offset ) || - ( error = Load_ClassDefinition( &ccpf2->LookaheadClassDef, count, - input ) ) != TT_Err_Ok ) - goto Fail3; + if ( lookahead_offset != base_offset ) { + if ( FILE_Seek( lookahead_offset ) || + ( error = Load_ClassDefinition( &ccpf2->LookaheadClassDef, count, + input ) ) != TT_Err_Ok ) + goto Fail3; + } (void)FILE_Seek( cur_offset ); ccpf2->ChainPosClassSet = NULL; Index: ftxgsub.c =================================================================== RCS file: /cvs/freetype/freetype/lib/extend/ftxgsub.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -p -r1.35 -r1.36 --- ftxgsub.c 2000/05/26 15:44:06 1.35 +++ ftxgsub.c 2001/03/05 04:44:33 1.36 @@ -2929,19 +2929,25 @@ FORGET_Frame(); + /* backtrack and lookahead data can be optional */ + cur_offset = FILE_Pos(); - if ( FILE_Seek( backtrack_offset ) || - ( error = Load_ClassDefinition( &ccsf2->BacktrackClassDef, count, - input ) ) != TT_Err_Ok ) - goto Fail5; + if ( backtrack_offset != base_offset ) { + if ( FILE_Seek( backtrack_offset ) || + ( error = Load_ClassDefinition( &ccsf2->BacktrackClassDef, count, + input ) ) != TT_Err_Ok ) + goto Fail5; + } if ( FILE_Seek( input_offset ) || ( error = Load_ClassDefinition( &ccsf2->InputClassDef, count, input ) ) != TT_Err_Ok ) goto Fail4; - if ( FILE_Seek( lookahead_offset ) || - ( error = Load_ClassDefinition( &ccsf2->LookaheadClassDef, count, - input ) ) != TT_Err_Ok ) - goto Fail3; + if ( lookahead_offset != base_offset ) { + if ( FILE_Seek( lookahead_offset ) || + ( error = Load_ClassDefinition( &ccsf2->LookaheadClassDef, count, + input ) ) != TT_Err_Ok ) + goto Fail3; + } (void)FILE_Seek( cur_offset ); ccsf2->ChainSubClassSet = NULL;