diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2007-12-12 12:11:53 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2007-12-12 12:11:53 +0000 |
commit | 4e481affe2d802842444d735cdd1fb7c2e351d37 (patch) | |
tree | 03a69fd03da08d35ff81a79ae246b3034c9f3f76 /gst | |
parent | 4d9802a3acfaa8a2a9dc04a4009e2b5377dcd89d (diff) | |
download | gst-plugins-bad-4e481affe2d802842444d735cdd1fb7c2e351d37.tar.gz gst-plugins-bad-4e481affe2d802842444d735cdd1fb7c2e351d37.tar.bz2 gst-plugins-bad-4e481affe2d802842444d735cdd1fb7c2e351d37.zip |
gst/rtpmanager/: Fix some leaks.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_finalize),
(gst_rtp_bin_set_sdes_string), (gst_rtp_bin_get_sdes_string),
(gst_rtp_bin_handle_message):
* gst/rtpmanager/rtpsession.c: (rtp_session_finalize),
(rtp_session_send_bye):
* gst/rtpmanager/rtpsource.c: (rtp_source_finalize):
Fix some leaks.
Diffstat (limited to 'gst')
-rw-r--r-- | gst/rtpmanager/gstrtpbin.c | 10 | ||||
-rw-r--r-- | gst/rtpmanager/rtpsession.c | 3 | ||||
-rw-r--r-- | gst/rtpmanager/rtpsource.c | 4 |
3 files changed, 17 insertions, 0 deletions
diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c index 9277a8b1..9d6689d2 100644 --- a/gst/rtpmanager/gstrtpbin.c +++ b/gst/rtpmanager/gstrtpbin.c @@ -1294,9 +1294,13 @@ static void gst_rtp_bin_finalize (GObject * object) { GstRtpBin *rtpbin; + gint i; rtpbin = GST_RTP_BIN (object); + for (i = 0; i < 9; i++) + g_free (rtpbin->sdes[i]); + g_mutex_free (rtpbin->priv->bin_lock); gst_object_unref (rtpbin->provided_clock); @@ -1347,6 +1351,9 @@ gst_rtp_bin_set_sdes_string (GstRtpBin * bin, GstRTCPSDESType type, GSList *item; const gchar *name; + if (type < 0 || type > 8) + return; + GST_OBJECT_LOCK (bin); g_free (bin->sdes[type]); bin->sdes[type] = g_strdup (data); @@ -1362,6 +1369,9 @@ gst_rtp_bin_get_sdes_string (GstRtpBin * bin, GstRTCPSDESType type) { gchar *result; + if (type < 0 || type > 8) + return NULL; + GST_OBJECT_LOCK (bin); result = g_strdup (bin->sdes[type]); GST_OBJECT_UNLOCK (bin); diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c index 5cba052b..b29f0037 100644 --- a/gst/rtpmanager/rtpsession.c +++ b/gst/rtpmanager/rtpsession.c @@ -323,6 +323,8 @@ rtp_session_finalize (GObject * object) for (i = 0; i < 32; i++) g_hash_table_destroy (sess->ssrcs[i]); + g_free (sess->bye_reason); + g_hash_table_destroy (sess->cnames); g_object_unref (sess->source); @@ -1577,6 +1579,7 @@ rtp_session_send_bye (RTPSession * sess, const gchar * reason) /* we have BYE now */ source->received_bye = TRUE; /* at least one member wants to send a BYE */ + g_free (sess->bye_reason); sess->bye_reason = g_strdup (reason); sess->stats.avg_rtcp_packet_size = 100; sess->stats.bye_members = 1; diff --git a/gst/rtpmanager/rtpsource.c b/gst/rtpmanager/rtpsource.c index 4985bccc..c48c8d0b 100644 --- a/gst/rtpmanager/rtpsource.c +++ b/gst/rtpmanager/rtpsource.c @@ -169,6 +169,7 @@ rtp_source_finalize (GObject * object) { RTPSource *src; GstBuffer *buffer; + gint i; src = RTP_SOURCE_CAST (object); @@ -176,6 +177,9 @@ rtp_source_finalize (GObject * object) gst_buffer_unref (buffer); g_queue_free (src->packets); + for (i = 0; i < 9; i++) + g_free (src->sdes[i]); + g_free (src->bye_reason); G_OBJECT_CLASS (rtp_source_parent_class)->finalize (object); |