ext/lame/gstlame.c: don't pass an uninitialised string pointer to lame if we don't know how to handle the tag type, a...

Original commit message from CVS:
* ext/lame/gstlame.c: (add_one_tag):
Fix handling of GST_TAG_DATE (#311679), don't pass an
uninitialised string pointer to lame if we don't know
how to handle the tag type, and fix minor memory leak.
This commit is contained in:
Tim-Philipp Müller 2006-01-23 15:02:04 +00:00
parent 28d6fa1937
commit 1bea0573bb

View file

@ -580,7 +580,7 @@ static void
add_one_tag (const GstTagList * list, const gchar * tag, gpointer user_data) add_one_tag (const GstTagList * list, const gchar * tag, gpointer user_data)
{ {
GstLame *lame; GstLame *lame;
gchar *value; gchar *value = NULL;
int i = 0; int i = 0;
lame = GST_LAME (user_data); lame = GST_LAME (user_data);
@ -616,16 +616,29 @@ add_one_tag (const GstTagList * list, const gchar * tag, gpointer user_data)
return; return;
}; };
break; break;
default: default:{
GST_WARNING_OBJECT (lame, "Couldn't write tag %s", tag); if (strcmp (tag, GST_TAG_DATE) == 0) {
GDate *date = NULL;
if (!gst_tag_list_get_date (list, tag, &date) || date == NULL) {
GST_WARNING_OBJECT (lame, "Error reading \"%s\" tag value", tag);
} else {
value = g_strdup_printf ("%u", g_date_get_year (date));
g_date_free (date);
}
} else {
GST_WARNING_OBJECT (lame, "Couldn't write tag %s", tag);
}
break; break;
}
} }
tag_matches[i].tag_func (lame->lgf, value); if (value != NULL && *value != '\0') {
GST_LOG_OBJECT (lame, "Adding tag %s:%s", tag, value);
if (gst_tag_get_type (tag) == G_TYPE_UINT) { tag_matches[i].tag_func (lame->lgf, value);
g_free (value);
} }
g_free (value);
} }
static void static void