queue2: avoid crashing due to negative percent
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>
Tue, 10 Nov 2009 13:10:56 +0000 (10:10 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>
Tue, 10 Nov 2009 13:10:56 +0000 (10:10 -0300)
queue2 would crash when using small buffer sizes because
it would overflow when calculating the percentage, resulting
in the buffering GstMessage not being created and trying to be
used. This patch uses a gint64 instead of a gint to do the
percentage math, making it harder to overflow.

plugins/elements/gstqueue2.c

index 9682d86..8aee01b 100644 (file)
@@ -580,7 +580,7 @@ apply_buffer (GstQueue2 * queue, GstBuffer * buffer, GstSegment * segment)
 static void
 update_buffering (GstQueue2 * queue)
 {
-  gint percent;
+  gint64 percent;
   gboolean post = FALSE;
 
   if (!queue->use_buffering || queue->high_percent <= 0)
@@ -647,7 +647,8 @@ update_buffering (GstQueue2 * queue)
     }
 
     GST_DEBUG_OBJECT (queue, "buffering %d percent", percent);
-    message = gst_message_new_buffering (GST_OBJECT_CAST (queue), percent);
+    message = gst_message_new_buffering (GST_OBJECT_CAST (queue),
+        (gint) percent);
     gst_message_set_buffering_stats (message, mode,
         queue->byte_in_rate, queue->byte_out_rate, buffering_left);