summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sourceforge.net>2008-12-16 09:37:53 +0000
committerStefan Kost <ensonic@users.sourceforge.net>2008-12-16 09:37:53 +0000
commit4a162d56ab68ccc888c45ad7850ec4d33679fef4 (patch)
treea8917e8fb04c3dbe5ecd4c2e3ab91cb07539b599
parentf28a2a6cfc7e69279c5bda8bbdcf31039d99487f (diff)
gst/gsttaglist.c: Avoid copy of empty taglist.
Original commit message from CVS: * gst/gsttaglist.c: Avoid copy of empty taglist.
-rw-r--r--ChangeLog5
-rw-r--r--gst/gsttaglist.c13
2 files changed, 10 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index a8b974174..899321a7b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,11 @@
2008-12-16 Stefan Kost <ensonic@users.sf.net>
* gst/gsttaglist.c:
+ Avoid copy of empty taglist.
+
+2008-12-16 Stefan Kost <ensonic@users.sf.net>
+
+ * gst/gsttaglist.c:
* tests/check/gst/gsttag.c:
More complete unit tests. Fix handling of empty taglists (they were
not merged before).
diff --git a/gst/gsttaglist.c b/gst/gsttaglist.c
index 5ad45817a..feb425e6e 100644
--- a/gst/gsttaglist.c
+++ b/gst/gsttaglist.c
@@ -692,8 +692,8 @@ GstTagList *
gst_tag_list_merge (const GstTagList * list1, const GstTagList * list2,
GstTagMergeMode mode)
{
- const GstTagList *list1_cp, *list2_cp;
- GstTagList *ret;
+ GstTagList *list1_cp;
+ const GstTagList *list2_cp;
g_return_val_if_fail (list1 == NULL || GST_IS_TAG_LIST (list1), NULL);
g_return_val_if_fail (list2 == NULL || GST_IS_TAG_LIST (list2), NULL);
@@ -705,18 +705,15 @@ gst_tag_list_merge (const GstTagList * list1, const GstTagList * list2,
}
/* create empty list, we need to do this to correctly handling merge modes */
- list1_cp = (list1) ? list1 : gst_tag_list_new ();
+ list1_cp = (list1) ? gst_tag_list_copy (list1) : gst_tag_list_new ();
list2_cp = (list2) ? list2 : gst_tag_list_new ();
- ret = gst_tag_list_copy (list1_cp);
- gst_tag_list_insert (ret, list2_cp, mode);
+ gst_tag_list_insert (list1_cp, list2_cp, mode);
- if (!list1)
- gst_tag_list_free ((GstTagList *) list1_cp);
if (!list2)
gst_tag_list_free ((GstTagList *) list2_cp);
- return ret;
+ return list1_cp;
}
/**