diff options
author | Eric Mader <emader@src.gnome.org> | 2002-09-06 22:45:23 +0000 |
---|---|---|
committer | Eric Mader <emader@src.gnome.org> | 2002-09-06 22:45:23 +0000 |
commit | fd3811bd3ffd33cc0bc3269c7c30860476aea88f (patch) | |
tree | 78f4dc13b3b9b94e7ea8471022a7967abcd4e602 | |
parent | 44ae86895367c5d3c3fc04847fc22adde97ab297 (diff) | |
download | pango-fd3811bd3ffd33cc0bc3269c7c30860476aea88f.tar.gz |
Don't fail when reading an empty script.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | ChangeLog.pre-1-10 | 4 | ||||
-rw-r--r-- | ChangeLog.pre-1-2 | 4 | ||||
-rw-r--r-- | ChangeLog.pre-1-4 | 4 | ||||
-rw-r--r-- | ChangeLog.pre-1-6 | 4 | ||||
-rw-r--r-- | ChangeLog.pre-1-8 | 4 | ||||
-rw-r--r-- | pango/opentype/ftxopen.c | 36 | ||||
-rw-r--r-- | pango/opentype/ftxopen.h | 1 |
8 files changed, 50 insertions, 11 deletions
@@ -1,3 +1,7 @@ +Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/ftxopen.c: + * pango/pango/opentype/ftxopen.h: don't fail on an empty script + 2002-09-05 jacob berkman <jacob@ximian.com> * autogen.sh: copy version with automake-1.4 fixes from -1-0 branch diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index 003252ec..994a5341 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,3 +1,7 @@ +Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/ftxopen.c: + * pango/pango/opentype/ftxopen.h: don't fail on an empty script + 2002-09-05 jacob berkman <jacob@ximian.com> * autogen.sh: copy version with automake-1.4 fixes from -1-0 branch diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2 index 003252ec..994a5341 100644 --- a/ChangeLog.pre-1-2 +++ b/ChangeLog.pre-1-2 @@ -1,3 +1,7 @@ +Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/ftxopen.c: + * pango/pango/opentype/ftxopen.h: don't fail on an empty script + 2002-09-05 jacob berkman <jacob@ximian.com> * autogen.sh: copy version with automake-1.4 fixes from -1-0 branch diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4 index 003252ec..994a5341 100644 --- a/ChangeLog.pre-1-4 +++ b/ChangeLog.pre-1-4 @@ -1,3 +1,7 @@ +Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/ftxopen.c: + * pango/pango/opentype/ftxopen.h: don't fail on an empty script + 2002-09-05 jacob berkman <jacob@ximian.com> * autogen.sh: copy version with automake-1.4 fixes from -1-0 branch diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index 003252ec..994a5341 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,3 +1,7 @@ +Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/ftxopen.c: + * pango/pango/opentype/ftxopen.h: don't fail on an empty script + 2002-09-05 jacob berkman <jacob@ximian.com> * autogen.sh: copy version with automake-1.4 fixes from -1-0 branch diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index 003252ec..994a5341 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,3 +1,7 @@ +Fri Nov 6 15:41:28 Eric Mader <mader@jtcsv.com> + * pango/pango/opentype/ftxopen.c: + * pango/pango/opentype/ftxopen.h: don't fail on an empty script + 2002-09-05 jacob berkman <jacob@ximian.com> * autogen.sh: copy version with automake-1.4 fixes from -1-0 branch diff --git a/pango/opentype/ftxopen.c b/pango/opentype/ftxopen.c index 3101d6fd..a072daf7 100644 --- a/pango/opentype/ftxopen.c +++ b/pango/opentype/ftxopen.c @@ -130,7 +130,7 @@ if ( s->LangSysCount == 0 && s->DefaultLangSys.FeatureCount == 0 ) { - error = TTO_Err_Invalid_SubTable; + error = TTO_Err_Empty_Script; goto Fail2; } @@ -205,7 +205,7 @@ FT_Error error; FT_Memory memory = stream->memory; - FT_UShort n, m, count; + FT_UShort n, script_count; FT_ULong cur_offset, new_offset, base_offset; TTO_ScriptRecord* sr; @@ -216,39 +216,53 @@ if ( ACCESS_Frame( 2L ) ) return error; - count = sl->ScriptCount = GET_UShort(); + script_count = GET_UShort(); FORGET_Frame(); sl->ScriptRecord = NULL; - if ( ALLOC_ARRAY( sl->ScriptRecord, count, TTO_ScriptRecord ) ) + if ( ALLOC_ARRAY( sl->ScriptRecord, script_count, TTO_ScriptRecord ) ) return error; sr = sl->ScriptRecord; - for ( n = 0; n < count; n++ ) + sl->ScriptCount= 0; + for ( n = 0; n < script_count; n++ ) { if ( ACCESS_Frame( 6L ) ) goto Fail; - sr[n].ScriptTag = GET_ULong(); + sr[sl->ScriptCount].ScriptTag = GET_ULong(); new_offset = GET_UShort() + base_offset; FORGET_Frame(); cur_offset = FILE_Pos(); - if ( FILE_Seek( new_offset ) || - ( error = Load_Script( &sr[n].Script, stream ) ) != TT_Err_Ok ) - goto Fail; + + if ( FILE_Seek( new_offset ) ) + goto Fail; + + error = Load_Script( &sr[sl->ScriptCount].Script, stream ); + if ( error == TT_Err_Ok ) + sl->ScriptCount += 1; + else if ( error != TTO_Err_Empty_Script ) + goto Fail; + (void)FILE_Seek( cur_offset ); } + if ( sl->ScriptCount == 0 ) + { + error = TTO_Err_Invalid_SubTable; + goto Fail; + } + return TT_Err_Ok; Fail: - for ( m = 0; m < n; m++ ) - Free_Script( &sr[m].Script, memory ); + for ( n = 0; n < sl->ScriptCount; n++ ) + Free_Script( &sr[n].Script, memory ); FREE( sl->ScriptRecord ); return error; diff --git a/pango/opentype/ftxopen.h b/pango/opentype/ftxopen.h index 28dff902..052f25cc 100644 --- a/pango/opentype/ftxopen.h +++ b/pango/opentype/ftxopen.h @@ -38,6 +38,7 @@ extern "C" { #define TTO_Err_Not_Covered 0x1002 #define TTO_Err_Too_Many_Nested_Contexts 0x1003 #define TTO_Err_No_MM_Interpreter 0x1004 +#define TTO_Err_Empty_Script 0x1005 /* Script list related structures */ |