v4l2bufferpool: check that allocator is non null when stopping pool
authorAurélien Zanelli <aurelien.zanelli@parrot.com>
Wed, 8 Oct 2014 08:35:14 +0000 (10:35 +0200)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Wed, 29 Oct 2014 20:24:01 +0000 (16:24 -0400)
Otherwise, we could dereference NULL allocator when the stop method is
called by the GstBufferPool's finalize method.

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

sys/v4l2/gstv4l2bufferpool.c

index 61e2faa..90215e0 100644 (file)
@@ -799,7 +799,8 @@ gst_v4l2_buffer_pool_stop (GstBufferPool * bpool)
   if (!gst_v4l2_buffer_pool_streamoff (pool))
     goto streamoff_failed;
 
-  gst_v4l2_allocator_flush (pool->vallocator);
+  if (pool->vallocator)
+    gst_v4l2_allocator_flush (pool->vallocator);
 
   for (i = 0; i < VIDEO_MAX_FRAME; i++) {
     if (pool->buffers[i]) {
@@ -818,7 +819,7 @@ gst_v4l2_buffer_pool_stop (GstBufferPool * bpool)
 
   ret = GST_BUFFER_POOL_CLASS (parent_class)->stop (bpool);
 
-  if (ret) {
+  if (ret && pool->vallocator) {
     GstV4l2Return vret;
 
     vret = gst_v4l2_allocator_stop (pool->vallocator);