dvbsuboverlay: Avoid leaking copy of caps object
authorSebastian Rasmussen <sebras@hotmail.com>
Sat, 9 Aug 2014 11:09:52 +0000 (13:09 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 11 Aug 2014 06:49:04 +0000 (08:49 +0200)
gst_pad_get_pad_template_caps() returns a reference which is unreferenced,
so creating a copy using gst_caps_copy() results in a reference leak.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734528

gst/dvbsuboverlay/gstdvbsuboverlay.c

index eaf1ca1..de65084 100644 (file)
@@ -549,7 +549,7 @@ gst_dvbsub_overlay_get_videosink_caps (GstDVBSubOverlay * render, GstPad * pad,
     if (gst_caps_is_any (peer_caps)) {
 
       /* if peer returns ANY caps, return filtered src pad template caps */
-      caps = gst_caps_copy (gst_pad_get_pad_template_caps (srcpad));
+      caps = gst_pad_get_pad_template_caps (srcpad);
       if (filter) {
         GstCaps *intersection = gst_caps_intersect_full (filter, caps,
             GST_CAPS_INTERSECT_FIRST);
@@ -617,7 +617,7 @@ gst_dvbsub_overlay_get_src_caps (GstDVBSubOverlay * render, GstPad * pad,
     if (gst_caps_is_any (peer_caps)) {
 
       /* if peer returns ANY caps, return filtered sink pad template caps */
-      caps = gst_caps_copy (gst_pad_get_pad_template_caps (sinkpad));
+      caps = gst_pad_get_pad_template_caps (sinkpad);
       if (filter) {
         GstCaps *intersection = gst_caps_intersect_full (filter, caps,
             GST_CAPS_INTERSECT_FIRST);