diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/sfnt/sfdriver.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/sfnt/sfdriver.c b/src/sfnt/sfdriver.c index b8b07c367..07fbd84a6 100644 --- a/src/sfnt/sfdriver.c +++ b/src/sfnt/sfdriver.c @@ -115,6 +115,7 @@ get_sfnt_postscript_name( TT_Face face ) { FT_Int n, found_win, found_apple; + const char* result = NULL; /* shouldn't happen, but just in case to avoid memory leaks */ @@ -151,11 +152,10 @@ TT_NameEntryRec* name = face->name_table.names + found_win; FT_UInt len = name->stringLength/2; FT_Error error; - FT_String* result; if ( !ALLOC( result, len+1 ) ) { - FT_String* r = result; + FT_String* r = (FT_String*)result; FT_Byte* p = (FT_Byte*) name->string; for ( ; len > 0; len--, p += 2 ) @@ -165,26 +165,28 @@ } *r = '\0'; } - return result; + goto Exit; } if ( found_apple ) { - FT_Memory memory = face->root.memory; + FT_Memory memory = face->root.memory; TT_NameEntryRec* name = face->name_table.names + found_win; - FT_UInt len = name->stringLength; - FT_Error error; - FT_String* result; + FT_UInt len = name->stringLength; + FT_Error error; + FT_String* result; if ( !ALLOC( result, len+1 ) ) { MEM_Copy( result, name->string, len ); result[len] = '\0'; } - return result; + goto Exit; } - return NULL; + Exit: + face->root.internal->postscript_name = result; + return result; } |