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 - [email protected]
+
+- 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 [email protected] -- 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to