From 1bea0573bb3b15d8b7e3cad7136789e88833985d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 23 Jan 2006 15:02:04 +0000 Subject: [PATCH] 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. --- ext/lame/gstlame.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/ext/lame/gstlame.c b/ext/lame/gstlame.c index fde95f5..c22f634 100644 --- a/ext/lame/gstlame.c +++ b/ext/lame/gstlame.c @@ -580,7 +580,7 @@ static void add_one_tag (const GstTagList * list, const gchar * tag, gpointer user_data) { GstLame *lame; - gchar *value; + gchar *value = NULL; int i = 0; lame = GST_LAME (user_data); @@ -616,16 +616,29 @@ add_one_tag (const GstTagList * list, const gchar * tag, gpointer user_data) return; }; break; - default: - GST_WARNING_OBJECT (lame, "Couldn't write tag %s", tag); + default:{ + 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; + } } - tag_matches[i].tag_func (lame->lgf, value); - - if (gst_tag_get_type (tag) == G_TYPE_UINT) { - g_free (value); + if (value != NULL && *value != '\0') { + GST_LOG_OBJECT (lame, "Adding tag %s:%s", tag, value); + tag_matches[i].tag_func (lame->lgf, value); } + + g_free (value); } static void -- 2.7.4