slomo gst-plugins-bad: gst-plugins-bad/ gst-plugins-bad/sys/dvb/

[email protected] Sun, 4 Jan 2009 03:11:20 -0800 (PST)
Newsgroups gmane.comp.video.gstreamer.cvs
Message-ID <[email protected]>
CVS Root:       /cvs/gstreamer
Module:         gst-plugins-bad
Changes by:     slomo
Date:           Sun Jan 04 2009  11:11:20 UTC

Log message:
Patch by: Sebastian Pölsterl <sebp at k-d-w dot org>
* sys/dvb/dvbbasebin.c: (dvb_base_bin_init),
(dvb_base_bin_finalize), (dvb_base_bin_activate_program),
(dvb_base_bin_pmt_info_cb), (dvb_base_bin_pad_added_cb),
(dvb_base_bin_program_destroy):
Fix some memory leaks. Fixes bug #566356.

Modified files:
    .               : ChangeLog
    sys/dvb         : dvbbasebin.c

Links:
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3849&r2=1.3850
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/sys/dvb/dvbbasebin.c.diff?r1=1.10&r2=1.11

====Begin Diffs====
Index: ChangeLog
===================================================================
RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v
retrieving revision 1.3849
retrieving revision 1.3850
diff -u -d -r1.3849 -r1.3850
--- ChangeLog	2 Jan 2009 17:40:04 -0000	1.3849
+++ ChangeLog	4 Jan 2009 11:11:04 -0000	1.3850
@@ -1,3 +1,13 @@
+2009-01-04  Sebastian Dröge  <[email protected]>
+
+	Patch by: Sebastian Pölsterl <sebp at k-d-w dot org>
+	* sys/dvb/dvbbasebin.c: (dvb_base_bin_init),
+	(dvb_base_bin_finalize), (dvb_base_bin_activate_program),
+	(dvb_base_bin_pmt_info_cb), (dvb_base_bin_pad_added_cb),
+	(dvb_base_bin_program_destroy):
+	Fix some memory leaks. Fixes bug #566356.
 2009-01-02  Wim Taymans  <[email protected]>
 
 	Patch by: Olivier Crete <tester at tester dot ca>
Index: dvbbasebin.c
RCS file: /cvs/gstreamer/gst-plugins-bad/sys/dvb/dvbbasebin.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- dvbbasebin.c	12 Feb 2008 21:31:57 -0000	1.10
+++ dvbbasebin.c	4 Jan 2009 11:11:06 -0000	1.11
@@ -125,6 +125,8 @@
 static void dvb_base_bin_uri_handler_init (gpointer g_iface,
     gpointer iface_data);
+static void dvb_base_bin_program_destroy (gpointer data);
 static void
 dvb_base_bin_setup_interfaces (GType type)
 {
@@ -352,7 +354,7 @@
       dvbbasebin->buffer_queue, dvbbasebin->mpegtsparse, NULL);
   dvbbasebin->programs = g_hash_table_new_full (g_direct_hash, g_direct_equal,
-      NULL, g_free);
+      NULL, dvb_base_bin_program_destroy);
   dvbbasebin->streams = g_hash_table_new_full (g_direct_hash, g_direct_equal,
       NULL, g_free);
@@ -398,6 +400,7 @@
   g_hash_table_destroy (dvbbasebin->streams);
   g_hash_table_destroy (dvbbasebin->programs);
+  g_list_free (dvbbasebin->pmtlist);
   if (G_OBJECT_CLASS (parent_class)->finalize)
     G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -505,8 +508,8 @@
   ghost = GST_GHOST_PAD (pad);
   target = gst_ghost_pad_get_target (ghost);
-  gst_element_release_request_pad (GST_ELEMENT (GST_DVB_BASE_BIN (element)->
-          mpegtsparse), target);
+  gst_element_release_request_pad (GST_ELEMENT (GST_DVB_BASE_BIN
+          (element)->mpegtsparse), target);
   gst_object_unref (target);
   gst_element_remove_pad (element, pad);
@@ -924,6 +927,7 @@
   DvbBaseBinProgram *program;
   gint program_number;
+  gchar *padname;
   program_number = get_pad_program_number (pad);
   if (program_number == -1)
@@ -933,13 +937,15 @@
   if (program == NULL)
     program = dvb_base_bin_add_program (dvbbasebin, program_number);
   program->selected = TRUE;
-  program->ghost = gst_ghost_pad_new (gst_pad_get_name (pad), pad);
+  padname = gst_pad_get_name (pad);
+  program->ghost = gst_ghost_pad_new (padname, pad);
   gst_pad_set_active (program->ghost, TRUE);
   gst_element_add_pad (GST_ELEMENT (dvbbasebin), program->ghost);
   /* if the program has a pmt, activate it now, otherwise it will get activated
    * when there's a PMT */
   if (!program->active && program->pmt_pid != G_MAXUINT16)
     dvb_base_bin_activate_program (dvbbasebin, program);
+  g_free (padname);
 }
@@ -1028,3 +1034,16 @@
   return gst_element_register (plugin, "dvbbasebin",
       GST_RANK_NONE, GST_TYPE_DVB_BASE_BIN);
+static void
+dvb_base_bin_program_destroy (gpointer data)
+{
+  DvbBaseBinProgram *program;
+  program = (DvbBaseBinProgram *) data;
+  if (program->pmt)
+    gst_structure_free (program->pmt);
+  g_free (program);
+}

------------------------------------------------------------------------------

_______________________________________________
gstreamer-cvs-verbose mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gstreamer-cvs-verbose