From 5cb40d7320e43ffd34c117f9fc59745d0d516844 Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Thu, 9 Apr 2015 13:00:02 +0100 Subject: [PATCH] audiobasesink: fix ring buffer leak on open failure --- gst-libs/gst/audio/gstaudiobasesink.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gst-libs/gst/audio/gstaudiobasesink.c b/gst-libs/gst/audio/gstaudiobasesink.c index 233efcb4df..32013fe6d5 100644 --- a/gst-libs/gst/audio/gstaudiobasesink.c +++ b/gst-libs/gst/audio/gstaudiobasesink.c @@ -2225,8 +2225,13 @@ gst_audio_base_sink_change_state (GstElement * element, sink->ringbuffer = rb; GST_OBJECT_UNLOCK (sink); - if (!gst_audio_ring_buffer_open_device (sink->ringbuffer)) + if (!gst_audio_ring_buffer_open_device (sink->ringbuffer)) { + GST_OBJECT_LOCK (sink); + gst_object_unparent (GST_OBJECT_CAST (sink->ringbuffer)); + sink->ringbuffer = NULL; + GST_OBJECT_UNLOCK (sink); goto open_failed; + } break; } case GST_STATE_CHANGE_READY_TO_PAUSED: