jpegenc: plug template caps leak
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 3 Apr 2012 16:36:50 +0000 (18:36 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 3 Apr 2012 16:42:51 +0000 (18:42 +0200)
ext/jpeg/gstjpegenc.c

index a21f525..07cc09d 100644 (file)
@@ -304,7 +304,7 @@ gst_jpegenc_getcaps (GstPad * pad, GstCaps * filter)
 {
   GstJpegEnc *jpegenc = GST_JPEGENC (gst_pad_get_parent (pad));
   GstCaps *caps, *othercaps;
-  const GstCaps *templ;
+  GstCaps *templ;
   gint i, j;
   GstStructure *structure = NULL;
 
@@ -312,14 +312,14 @@ gst_jpegenc_getcaps (GstPad * pad, GstCaps * filter)
      other end of the element */
 
   othercaps = gst_pad_peer_query_caps (jpegenc->srcpad, filter);
+  templ = gst_pad_get_pad_template_caps (pad);
   if (othercaps == NULL ||
       gst_caps_is_empty (othercaps) || gst_caps_is_any (othercaps)) {
-    caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad));
+    caps = templ;
     goto done;
   }
 
   caps = gst_caps_new_empty ();
-  templ = gst_pad_get_pad_template_caps (pad);
 
   for (i = 0; i < gst_caps_get_size (templ); i++) {
     /* pick fields from peer caps */
@@ -339,6 +339,8 @@ gst_jpegenc_getcaps (GstPad * pad, GstCaps * filter)
     }
   }
 
+  gst_caps_unref (templ);
+
 done:
 
   gst_caps_replace (&othercaps, NULL);