summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Turner <david@freetype.org>2002-03-20 10:47:38 +0000
committerDavid Turner <david@freetype.org>2002-03-20 10:47:38 +0000
commit678e0d46cd372cbad73aea3a0d71c68cdd017b85 (patch)
tree60dbbd3bd9e1a2971de037eff8a45b1d88f37a9d
parent2bf2b9cc21c3ef45f213ca588f563559926c63cd (diff)
downloadfreetype2-678e0d46cd372cbad73aea3a0d71c68cdd017b85.tar.gz
* src/sfnt/sfdriver.c (get_sfnt_postscript_name): fixed memory leak
-rw-r--r--src/sfnt/sfdriver.c20
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;
}