disparity: Don't assume that get_current_caps() returns non-NULL caps after has_curre...
authorDave Craig <dcraig@brightsign.biz>
Tue, 23 Feb 2016 16:13:37 +0000 (18:13 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 23 Feb 2016 16:13:37 +0000 (18:13 +0200)
Remove calls to gst_pad_has_current_caps() which then go on to call
gst_pad_get_current_caps() as the caps can go to NULL in between. Instead just
use gst_pad_get_current_caps() and check for NULL.

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

ext/opencv/gstdisparity.cpp

index 28f06a745fe7246cb10fbae98ff2a6ce01a78018..3ca9015a3fe5db6a6f9d59d825ca77ce1b07ada0 100644 (file)
@@ -416,12 +416,12 @@ gst_disparity_handle_query (GstPad * pad, GstObject * parent, GstQuery * query)
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_CAPS:
       g_mutex_lock (&fs->lock);
-      if (!gst_pad_has_current_caps (fs->srcpad)) {
+      current_caps = gst_pad_get_current_caps (fs->srcpad);
+      if (current_caps == NULL) {
         template_caps = gst_pad_get_pad_template_caps (pad);
         gst_query_set_caps_result (query, template_caps);
         gst_caps_unref (template_caps);
       } else {
-        current_caps = gst_pad_get_current_caps (fs->srcpad);
         gst_query_set_caps_result (query, current_caps);
         gst_caps_unref (current_caps);
       }