diff options
author | David Turner <david@freetype.org> | 2002-03-20 10:47:38 +0000 |
---|---|---|
committer | David Turner <david@freetype.org> | 2002-03-20 10:47:38 +0000 |
commit | 678e0d46cd372cbad73aea3a0d71c68cdd017b85 (patch) | |
tree | 60dbbd3bd9e1a2971de037eff8a45b1d88f37a9d | |
parent | 2bf2b9cc21c3ef45f213ca588f563559926c63cd (diff) | |
download | freetype2-678e0d46cd372cbad73aea3a0d71c68cdd017b85.tar.gz |
* src/sfnt/sfdriver.c (get_sfnt_postscript_name): fixed memory leak
-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; } |