diff options
author | benjamin gaignard <benjamin.gaignard@stericsson> | 2010-12-20 15:33:28 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2010-12-21 17:50:20 +0100 |
commit | f0ebcba6c4ce8a6a04a3b041abbd34610c0dc8e7 (patch) | |
tree | 55b25bcebb7838706d9df662294e4ce2e5ab483f /gst/autoconvert | |
parent | 3c2d4a4b0ad483b3610e520b4e262464a595c7d5 (diff) | |
download | gstreamer-plugins-bad-f0ebcba6c4ce8a6a04a3b041abbd34610c0dc8e7.tar.gz |
autoconvert: Avoid some leaks in autoconvert
unref sink and src pad after gst_pad_by_direction calls unref
element if gst_auto_convert_activate_element failed.
See bug #637553.
Diffstat (limited to 'gst/autoconvert')
-rw-r--r-- | gst/autoconvert/gstautoconvert.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gst/autoconvert/gstautoconvert.c b/gst/autoconvert/gstautoconvert.c index ebe297c11..97bd8b445 100644 --- a/gst/autoconvert/gstautoconvert.c +++ b/gst/autoconvert/gstautoconvert.c @@ -576,6 +576,7 @@ gst_auto_convert_add_element (GstAutoConvert * autoconvert, if (!sinkpad) { GST_ERROR_OBJECT (autoconvert, "Could not find sink in %s", GST_OBJECT_NAME (element)); + gst_object_unref (srcpad); goto error; } @@ -652,6 +653,9 @@ gst_auto_convert_add_element (GstAutoConvert * autoconvert, /* Increment the reference count we will return to the caller */ gst_object_ref (element); + /* unref sink and src pad */ + gst_object_unref (srcpad); + gst_object_unref (sinkpad); return element; error: @@ -879,6 +883,8 @@ gst_auto_convert_sink_setcaps (GstPad * pad, GstCaps * caps) /* And make it the current child */ if (gst_auto_convert_activate_element (autoconvert, element, caps)) break; + else + gst_object_unref (element); } get_out: |