summaryrefslogtreecommitdiff
path: root/src/bdf
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2010-06-19 16:08:31 +0200
committerWerner Lemberg <wl@gnu.org>2010-06-19 16:08:31 +0200
commitf4c94d4b5f6b3e13415025ffa6fa07415d00104d (patch)
treefd19ce572cf502b2ddcbcc031b3ef1f4e572c655 /src/bdf
parent5d86cdce7e2f0885016d0299cef9fe2359025cf0 (diff)
Fix Savannah bug #30135.
* src/bdf/bdflib.c (_bdf_list_join): Don't modify value in static string `empty'. (_bdf_parse_glyph): Avoid memory leak in case of error.
Diffstat (limited to 'src/bdf')
-rw-r--r--src/bdf/bdflib.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/bdf/bdflib.c b/src/bdf/bdflib.c
index cc0f48f4..6ce5c26c 100644
--- a/src/bdf/bdflib.c
+++ b/src/bdf/bdflib.c
@@ -1,6 +1,6 @@
/*
* Copyright 2000 Computing Research Labs, New Mexico State University
- * Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
+ * Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
* Francesco Zappa Nardelli
*
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -470,6 +470,11 @@
}
+ /* An empty string for empty fields. */
+
+ static const char empty[1] = { 0 }; /* XXX eliminate this */
+
+
static char *
_bdf_list_join( _bdf_list_t* list,
int c,
@@ -494,18 +499,14 @@
if ( i + 1 < list->used )
dp[j++] = (char)c;
}
- dp[j] = 0;
+ if ( dp != empty )
+ dp[j] = 0;
*alen = j;
return dp;
}
- /* An empty string for empty fields. */
-
- static const char empty[1] = { 0 }; /* XXX eliminate this */
-
-
static FT_Error
_bdf_list_split( _bdf_list_t* list,
char* separators,
@@ -1868,6 +1869,9 @@
error = BDF_Err_Invalid_File_Format;
Exit:
+ if ( error && ( p->flags & _BDF_GLYPH ) )
+ FT_FREE( p->glyph_name );
+
return error;
}