From d90d6b65ce6946271f43c1f61fc39fbdba4a1f1d Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Fri, 3 Aug 2007 16:34:21 +0200 Subject: [PATCH] Some fixes * A long lasting bug in free_buffer * We can only add a handle when the current one has finished buffering * Some debug output changes --- testplugin.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/testplugin.c b/testplugin.c index 508f5ae..08602bf 100644 --- a/testplugin.c +++ b/testplugin.c @@ -351,7 +351,7 @@ static void fill_buffer(void) struct memory_handle *m = first_handle; while (m) { if (m->filerem > 0) { - buffer_handle(first_handle->id); + buffer_handle(m->id); return; } m = m->next; @@ -392,6 +392,11 @@ static size_t wasted_space(void) */ int bufopen(char *file, size_t offset) { + if (cur_handle && cur_handle->filerem > 0) { + DEBUGF("bufopen: current handle still has data to buffer, aborted.\n"); + return -1; + } + DEBUGF("bufopen: %s (offset: %ld)\n", file, offset); int fd = rb->open(file, O_RDONLY); @@ -419,7 +424,7 @@ int bufopen(char *file, size_t offset) h->data_len = size; h->available = 0; - DEBUGF("added handle : %d\n", h->id); + DEBUGF("allocated %ld bytes. ID: %d\n", size, h->id); return h->id; } @@ -531,6 +536,7 @@ ssize_t bufgetdata(int handle_id, size_t size, unsigned char **data) size_t copy_n = h->ridx + size - buffer_len; rb->memcpy(guard_buffer, (unsigned char *)buffer, copy_n); ret = size; + DEBUGF("used the guard buffer to complete\n"); } else { -- 2.11.4.GIT