[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