From 624497b1c586d3c14fbda91e56edfddbf83e9293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommi=20My=C3=B6h=C3=A4nen?= Date: Thu, 15 Nov 2007 17:35:18 +0000 Subject: [PATCH] gst/rtsp/gstrtspsrc.c: Fix 3 pad leaks. Fixes #496983. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message from CVS: Patch by: Tommi Myöhänen * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_stream_free), (gst_rtspsrc_stream_configure_tcp): Fix 3 pad leaks. Fixes #496983. --- ChangeLog | 8 ++++++++ gst/rtsp/gstrtspsrc.c | 12 ++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d69dddc713..46d95344c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-11-15 Wim Taymans + + Patch by: Tommi Myöhänen + + * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_stream_free), + (gst_rtspsrc_stream_configure_tcp): + Fix 3 pad leaks. Fixes #496983. + 2007-11-15 Wim Taymans Patch by: Tommi Myöhänen diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index 98d1c59781..aa13ad1242 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -692,8 +692,6 @@ gst_rtspsrc_stream_free (GstRTSPSrc * src, GstRTSPStream * stream) pad = gst_element_get_pad (udpsrc, "src"); if (stream->channelpad[i]) { gst_pad_unlink (pad, stream->channelpad[i]); - gst_object_unref (stream->channelpad[i]); - stream->channelpad[i] = NULL; } gst_element_set_state (udpsrc, GST_STATE_NULL); @@ -701,6 +699,10 @@ gst_rtspsrc_stream_free (GstRTSPSrc * src, GstRTSPStream * stream) gst_object_unref (stream->udpsrc[i]); stream->udpsrc[i] = NULL; } + if (stream->channelpad[i]) { + gst_object_unref (stream->channelpad[i]); + stream->channelpad[i] = NULL; + } } if (stream->udpsink) { gst_element_set_state (stream->udpsink, GST_STATE_NULL); @@ -716,6 +718,10 @@ gst_rtspsrc_stream_free (GstRTSPSrc * src, GstRTSPStream * stream) } stream->srcpad = NULL; } + if (stream->rtcppad) { + gst_object_unref (stream->rtcppad); + stream->rtcppad = NULL; + } g_free (stream); } @@ -1875,6 +1881,8 @@ gst_rtspsrc_stream_configure_tcp (GstRTSPSrc * src, GstRTSPStream * stream, /* and link */ if (pad) gst_pad_link (pad, stream->rtcppad); + + gst_object_unref (template); } return TRUE; }