[Swfdec-commits] swfdec/swfdec_buffer.c

Benjamin Otte company at kemper.freedesktop.org
Fri Feb 1 02:30:41 PST 2008


 swfdec/swfdec_buffer.c |   13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

New commits:
commit 607f3eeed7a7a98621083f0feba4d9315c70fc3b
Author: Benjamin Otte <otte at gnome.org>
Date:   Fri Feb 1 11:30:34 2008 +0100

    fix issues with buffer queue rewrite

diff --git a/swfdec/swfdec_buffer.c b/swfdec/swfdec_buffer.c
index b50fb2d..d3d2691 100644
--- a/swfdec/swfdec_buffer.c
+++ b/swfdec/swfdec_buffer.c
@@ -495,19 +495,24 @@ swfdec_buffer_queue_peek (SwfdecBufferQueue * queue, gsize length)
 
   SWFDEC_LOG ("peeking %zu, %zu available", length, queue->depth);
 
+  /* need to special case here, because the queue may be empty */
+  if (length == 0)
+    return swfdec_buffer_new ();
+
   g = queue->first_buffer;
   buffer = g->data;
   if (buffer->length >= length) {
     newbuffer = swfdec_buffer_new_subbuffer (buffer, 0, length);
   } else {
-    gsize offset;
+    gsize amount, offset;
     newbuffer = swfdec_buffer_new_and_alloc (length);
-    for (offset = 0; offset < length; offset += buffer->length) {
-      gsize amount = MIN (length - offset, buffer->length);
+    offset = 0;
+    while (offset < length) {
+      buffer = g->data;
+      amount = MIN (length - offset, buffer->length);
       oil_copy_u8 (newbuffer->data + offset, buffer->data, amount);
       offset += amount;
       g = g->next;
-      buffer = g->data;
     }
   }
 


More information about the Swfdec-commits mailing list