queue2: not update upstream size with negative value
authorEunhae Choi <eunhae1.choi@samsung.com>
Tue, 4 Aug 2015 04:45:09 +0000 (13:45 +0900)
committerThiago Santos <thiagoss@osg.samsung.com>
Tue, 4 Aug 2015 10:03:24 +0000 (07:03 -0300)
upstream_size can be negative but queue->upstream_size is unsigned type.
to get a chance to update queue->upstream_size in gst_queue2_get_range()
it should keep the default value.

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

plugins/elements/gstqueue2.c

index 28d7e5e..34c922c 100644 (file)
@@ -3176,7 +3176,13 @@ gst_queue2_update_upstream_size (GstQueue2 * queue)
   if (gst_pad_peer_query_duration (queue->sinkpad, GST_FORMAT_BYTES,
           &upstream_size)) {
     GST_INFO_OBJECT (queue, "upstream size: %" G_GINT64_FORMAT, upstream_size);
-    queue->upstream_size = upstream_size;
+
+    /* upstream_size can be negative but queue->upstream_size is unsigned.
+     * Prevent setting negative values to it (the query can return -1) */
+    if (upstream_size >= 0)
+      queue->upstream_size = upstream_size;
+    else
+      queue->upstream_size = 0;
   }
 }