diff -u -u -r1.6 gsttaglib.cc
--- ext/taglib/gsttaglib.cc	26 Mar 2006 19:56:37 -0000	1.6
+++ ext/taglib/gsttaglib.cc	28 Apr 2006 14:22:53 -0000
@@ -392,23 +392,16 @@
   const GstTagList *tagsetter_tags;
   GstTagList *taglist;
   GstEvent *event;
-
-  if (taglib->event_tags != NULL) {
-    taglist = gst_tag_list_copy (taglib->event_tags);
-  } else {
-    taglist = gst_tag_list_new ();
-  }
+  GstTagMergeMode merge_mode;
 
   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 (taglib, "merging tags, merge mode = %d", merge_mode);
-    GST_LOG_OBJECT (taglib, "event tags: %" GST_PTR_FORMAT, taglist);
-    GST_LOG_OBJECT (taglib, "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 (taglib, "merging tags, merge mode = %d", merge_mode);
+  GST_LOG_OBJECT (taglib, "event tags: %" GST_PTR_FORMAT, taglib->event_tags);
+  GST_LOG_OBJECT (taglib, "set   tags: %" GST_PTR_FORMAT, tagsetter_tags);
+  taglist = gst_tag_list_merge (tagsetter_tags,
+      taglib->event_tags, merge_mode);
 
   GST_LOG_OBJECT (taglib, "final tags: %" GST_PTR_FORMAT, taglist);
 
