commit gstreamer-0_10-plugins-good for openSUSE:11.4
Hello community, here is the log from the commit of package gstreamer-0_10-plugins-good for openSUSE:11.4 checked in at Thu Mar 24 18:36:39 CET 2011. -------- --- old-versions/11.4/all/gstreamer-0_10-plugins-good/gstreamer-0_10-plugins-good.changes 2011-02-01 11:41:14.000000000 +0100 +++ 11.4/gstreamer-0_10-plugins-good/gstreamer-0_10-plugins-good.changes 2011-03-24 13:19:25.000000000 +0100 @@ -1,0 +2,5 @@ +Sat Mar 5 09:28:38 UTC 2011 - timshel@rocketmail.com + +- added possible fix for gstreamer crashes (bnc#673914, bgo#641330) + +------------------------------------------------------------------- Package does not exist at destination yet. Using Fallback old-versions/11.4/all/gstreamer-0_10-plugins-good Destination is old-versions/11.4/UPDATES/all/gstreamer-0_10-plugins-good calling whatdependson for 11.4-i586 New: ---- gstreamer-0_10-plugins-good-fix-tag-list-handling-issue.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer-0_10-plugins-good.spec ++++++ --- /var/tmp/diff_new_pack.mFWZMH/_old 2011-03-24 18:36:25.000000000 +0100 +++ /var/tmp/diff_new_pack.mFWZMH/_new 2011-03-24 18:36:25.000000000 +0100 @@ -24,7 +24,7 @@ %define ENABLE_AALIB 1 %define _name gst-plugins-good Version: 0.10.27 -Release: 1 +Release: 4.<RELEASE5> %define gst_branch 0.10 %if 0%{?ENABLE_AALIB} BuildRequires: aalib-devel @@ -68,6 +68,8 @@ License: LGPLv2.1+ Group: Productivity/Multimedia/Other Source0: http://gstreamer.freedesktop.org/src/gst-plugins-good/%{_name}-%{version}.tar.bz2 +# PATCH-FIX-UPSTREAM gstreamer-0_10-plugins-good-fix-tag-list-handling-issue.patch bnc673914, bgo641330 timshel@rocketmail.com -- possible fix for gstreamer crashes in Amarok +Patch0: gstreamer-0_10-plugins-good-fix-tag-list-handling-issue.patch Url: http://gstreamer.freedesktop.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build Summary: GStreamer Streaming-Media Framework Plug-Ins @@ -148,6 +150,7 @@ %prep chmod 0644 %{S:0} %setup -q -n %{_name}-%{version} +%patch0 -p1 translation-update-upstream po gst-plugins-good-0.10 %build ++++++ gstreamer-0_10-plugins-good-fix-tag-list-handling-issue.patch ++++++ diff --git a/gst/icydemux/gsticydemux.c b/gst/icydemux/gsticydemux.c index 5965500..2582959 100644 --- a/gst/icydemux/gsticydemux.c +++ b/gst/icydemux/gsticydemux.c @@ -301,6 +301,7 @@ gst_icydemux_unicodify (const gchar * str) return gst_tag_freeform_string_to_utf8 (str, -1, env_vars); } +/* takes ownership of tag list */ static gboolean gst_icydemux_tag_found (GstICYDemux * icydemux, GstTagList * tags) { @@ -309,10 +310,13 @@ gst_icydemux_tag_found (GstICYDemux * icydemux, GstTagList * tags) return gst_icydemux_send_tag_event (icydemux, tags); /* if we haven't a source pad yet, cache the tags */ - if (!icydemux->cached_tags) - icydemux->cached_tags = gst_tag_list_new (); - - gst_tag_list_insert (icydemux->cached_tags, tags, GST_TAG_MERGE_REPLACE_ALL); + if (!icydemux->cached_tags) { + icydemux->cached_tags = tags; + } else { + gst_tag_list_insert (icydemux->cached_tags, tags, + GST_TAG_MERGE_REPLACE_ALL); + gst_tag_list_free (tags); + } return TRUE; } @@ -320,12 +324,11 @@ gst_icydemux_tag_found (GstICYDemux * icydemux, GstTagList * tags) static void gst_icydemux_parse_and_send_tags (GstICYDemux * icydemux) { - GstTagList *tags = gst_tag_list_new (); + GstTagList *tags; const guint8 *data; int length, i; gchar *buffer; gchar **strings; - gboolean found_tag = FALSE; length = gst_adapter_available (icydemux->meta_adapter); @@ -333,10 +336,9 @@ gst_icydemux_parse_and_send_tags (GstICYDemux * icydemux) /* Now, copy this to a buffer where we can NULL-terminate it to make things * a bit easier, then do that parsing. */ - buffer = g_malloc (length + 1); - memcpy (buffer, data, length); - buffer[length] = 0; + buffer = g_strndup ((const gchar *) data, length); + tags = gst_tag_list_new (); strings = g_strsplit (buffer, "';", 0); for (i = 0; strings[i]; i++) { @@ -347,7 +349,6 @@ gst_icydemux_parse_and_send_tags (GstICYDemux * icydemux) gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_TITLE, title, NULL); g_free (title); - found_tag = TRUE; } } else if (!g_ascii_strncasecmp (strings[i], "StreamUrl=", 10)) { char *url = gst_icydemux_unicodify (strings[i] + 11); @@ -356,7 +357,6 @@ gst_icydemux_parse_and_send_tags (GstICYDemux * icydemux) gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_HOMEPAGE, url, NULL); g_free (url); - found_tag = TRUE; } } } @@ -365,8 +365,10 @@ gst_icydemux_parse_and_send_tags (GstICYDemux * icydemux) g_free (buffer); gst_adapter_clear (icydemux->meta_adapter); - if (found_tag) + if (!gst_tag_list_is_empty (tags)) gst_icydemux_tag_found (icydemux, tags); + else + gst_tag_list_free (tags); } static gboolean @@ -379,7 +381,7 @@ gst_icydemux_handle_event (GstPad * pad, GstEvent * event) GstTagList *tags; gst_event_parse_tag (event, &tags); - result = gst_icydemux_tag_found (icydemux, tags); + result = gst_icydemux_tag_found (icydemux, gst_tag_list_copy (tags)); gst_event_unref (event); return result; } @@ -617,6 +619,7 @@ gst_icydemux_change_state (GstElement * element, GstStateChange transition) return ret; } +/* takes ownership of tag list */ static gboolean gst_icydemux_send_tag_event (GstICYDemux * icydemux, GstTagList * tags) { ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de