v4l2object: Don't leak config structure
authorNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Fri, 9 May 2014 16:10:04 +0000 (12:10 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Fri, 9 May 2014 16:10:04 +0000 (12:10 -0400)
this fixes a leak of the config structure and take care of making sure
caps can't reach ref 0 before we are done doing our check.

CID 1212144

sys/v4l2/gstv4l2object.c

index 0c73baa..77f8aa4 100644 (file)
@@ -2952,16 +2952,21 @@ gst_v4l2_object_set_crop (GstV4l2Object * obj)
 gboolean
 gst_v4l2_object_caps_equal (GstV4l2Object * v4l2object, GstCaps * caps)
 {
-  GstStructure *s;
+  GstStructure *config;
   GstCaps *oldcaps;
+  gboolean ret;
 
   if (!v4l2object->pool)
     return FALSE;
 
-  s = gst_buffer_pool_get_config (GST_BUFFER_POOL_CAST (v4l2object->pool));
-  gst_buffer_pool_config_get_params (s, &oldcaps, NULL, NULL, NULL);
+  config = gst_buffer_pool_get_config (v4l2object->pool);
+  gst_buffer_pool_config_get_params (config, &oldcaps, NULL, NULL, NULL);
 
-  return oldcaps && gst_caps_is_equal (caps, oldcaps);
+  ret = oldcaps && gst_caps_is_equal (caps, oldcaps);
+
+  gst_structure_free (config);
+
+  return ret;
 }
 
 gboolean