From cb3848d2452a483d9e633faade6f52d4a9815b70 Mon Sep 17 00:00:00 2001 From: James Doc Livingston Date: Thu, 18 May 2006 12:46:08 +0000 Subject: [PATCH] ext/taglib/gsttaglibmux.c: Merge event tags and tag setter tags correctly (#339918). Also, don't leak taglist in case... Original commit message from CVS: Patch by: James "Doc" Livingston * ext/taglib/gsttaglibmux.c: (gst_tag_lib_mux_render_tag): Merge event tags and tag setter tags correctly (#339918). Also, don't leak taglist in case of an error. --- ChangeLog | 8 ++++++++ common | 2 +- ext/taglib/gsttaglibmux.c | 27 ++++++++++++--------------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 722344e..bf0c2f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-05-18 Tim-Philipp Müller + + Patch by: James "Doc" Livingston + + * ext/taglib/gsttaglibmux.c: (gst_tag_lib_mux_render_tag): + Merge event tags and tag setter tags correctly (#339918). Also, + don't leak taglist in case of an error. + 2006-05-17 Edward Hervey * gst/law/mulaw-decode.c: (mulawdec_getcaps): diff --git a/common b/common index 8eb9ea4..a5b6630 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 8eb9ea46137c34191bdbeca946ca4419ba573b51 +Subproject commit a5b66304e7abe1440a0f8b0ed232ffbc56e8f3de diff --git a/ext/taglib/gsttaglibmux.c b/ext/taglib/gsttaglibmux.c index 5224e6c..f3321d3 100644 --- a/ext/taglib/gsttaglibmux.c +++ b/ext/taglib/gsttaglibmux.c @@ -134,28 +134,23 @@ static GstBuffer * gst_tag_lib_mux_render_tag (GstTagLibMux * mux) { GstTagLibMuxClass *klass; + GstTagMergeMode merge_mode; + GstTagSetter *tagsetter; GstBuffer *buffer; - GstTagSetter *tagsetter = GST_TAG_SETTER (mux); const GstTagList *tagsetter_tags; GstTagList *taglist; GstEvent *event; - if (mux->event_tags != NULL) { - taglist = gst_tag_list_copy (mux->event_tags); - } else { - taglist = gst_tag_list_new (); - } + tagsetter = GST_TAG_SETTER (mux); tagsetter_tags = gst_tag_setter_get_tag_list (tagsetter); - if (tagsetter_tags) { - GstTagMergeMode merge_mode; - - merge_mode = gst_tag_setter_get_tag_merge_mode (tagsetter); - GST_LOG_OBJECT (mux, "merging tags, merge mode = %d", merge_mode); - GST_LOG_OBJECT (mux, "event tags: %" GST_PTR_FORMAT, taglist); - GST_LOG_OBJECT (mux, "set tags: %" GST_PTR_FORMAT, tagsetter_tags); - gst_tag_list_insert (taglist, tagsetter_tags, merge_mode); - } + merge_mode = gst_tag_setter_get_tag_merge_mode (tagsetter); + + GST_LOG_OBJECT (mux, "merging tags, merge mode = %d", merge_mode); + GST_LOG_OBJECT (mux, "event tags: %" GST_PTR_FORMAT, mux->event_tags); + GST_LOG_OBJECT (mux, "set tags: %" GST_PTR_FORMAT, tagsetter_tags); + + taglist = gst_tag_list_merge (tagsetter_tags, mux->event_tags, merge_mode); GST_LOG_OBJECT (mux, "final tags: %" GST_PTR_FORMAT, taglist); @@ -189,12 +184,14 @@ gst_tag_lib_mux_render_tag (GstTagLibMux * mux) no_vfunc: { GST_ERROR_OBJECT (mux, "Subclass does not implement render_tag vfunc!"); + gst_tag_list_free (taglist); return NULL; } render_error: { GST_ERROR_OBJECT (mux, "Failed to render tag"); + gst_tag_list_free (taglist); return NULL; } } -- 2.7.4