v4l2sink: fix pool-less allocation query handling
authorPhilipp Zabel <p.zabel@pengutronix.de>
Thu, 7 Mar 2019 10:24:38 +0000 (11:24 +0100)
committerPhilipp Zabel <philipp.zabel@gmail.com>
Fri, 8 Mar 2019 21:01:14 +0000 (22:01 +0100)
This fixes a critical warning if the last-sample property is enabled:

  (gst-launch-1.0:391): GStreamer-CRITICAL **: 01:12:57.428: gst_object_unref: assertion 'object != NULL' failed

If the allocation query does not contain any allocation pools,
gst_query_parse_nth_allocation_pool will leave the local pool,
min, and max variables undefined, so check the array length first.
If pool is NULL, do not call gst_object_unref.

sys/v4l2/gstv4l2sink.c

index 8739218..48ed8f4 100644 (file)
@@ -556,7 +556,7 @@ gst_v4l2sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
 
   g_object_get (bsink, "enable-last-sample", &last_sample_enabled, NULL);
 
-  if (last_sample_enabled) {
+  if (last_sample_enabled && gst_query_get_n_allocation_pools (query) > 0) {
     GstBufferPool *pool;
     guint size, min, max;
 
@@ -568,7 +568,8 @@ gst_v4l2sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
       max = min;
 
     gst_query_set_nth_allocation_pool (query, 0, pool, size, min, max);
-    gst_object_unref (pool);
+    if (pool)
+      gst_object_unref (pool);
   }
 
   return TRUE;